Utiliser la connexion MaxCompute pour accéder à la pratique de développement Hologres

Introduction: De nombreux clients utilisent la solution d'intégration de MaxCompute et Hologres pour répondre à plusieurs scénarios commerciaux tels que l'analyse hors ligne à grande échelle, l'analyse des opérations en temps réel, les requêtes interactives et le service en ligne. MaxCompute et Hologres se soutiennent mutuellement pour lire et écrire les données de l'autre, ce qui peut éliminer la redondance inutile des données, former une hiérarchie de données efficace et prendre en charge des vues unifiées hors ligne / en temps réel et des analyses conjointes. Cet article se concentre sur la pratique de développement de la façon dont MaxCompute accède aux données Hologres.

Utiliser la connexion MaxCompute pour accéder à la pratique de développement Hologres

Préface

MaxCompute (Big Data Computing Service) est Alibaba Cloud Serverless, un service d'entrepôt de données cloud entièrement géré qui prend en charge plusieurs scénarios d'analyse, et Hologres (Interactive Analysis) est le produit d'analyse interactive en temps réel d'Alibaba Cloud. Hologres a la capacité d'écrire et d'interroger des données en temps réel avec une concurrence élevée. Il prend également en charge la capacité d'accélérer l'analyse des données MaxCompute avec des performances élevées sans migration de données, analyse fédérée des données en temps réel Hologres et données hors ligne MaxCompute, pour atteindre solutions de produits d'entrepôt de données intégrées hors ligne et en temps réel. De nombreux clients utilisent la solution d'intégration de MaxCompute et Hologres pour répondre à plusieurs scénarios commerciaux tels que l'analyse hors ligne à grande échelle, l'analyse des opérations en temps réel, les requêtes interactives et le service en ligne.

Les documents officiels des produits Hologres donnent également des descriptions de scénarios d'application typiques de «l'analyse fédérale des données en temps réel et des données hors ligne» . Comme indiqué ci-dessous:

image.png

À partir du lien d'échange de données entre MaxCompute et Hologres, il y a deux parties:

  • Les hologres peuvent «lire» MaxCompute directement: Hologres utilise la syntaxe IMPORT FOREIGN SCHEMA pour créer des apparences MaxCompute par lots et analyser les données stockées dans MaxCompute côté Hologres avec une accélération haute performance. Par exemple, les hologres peuvent être utilisés pour une consommation en temps réel sur le jour même et près de 30 jours dans MaxCompute Analyse comparative des données de consommation, pour des opérations spécifiques, se référer au contenu correspondant de la documentation produit Hologres .
  • MaxCompute peut "lire" directement les Hologres: les données en temps réel du jour entrent dans les Hologres, et l'analyse des opérations en temps réel est effectuée côté Hologres. À T + 1, la logique ETL et le traitement du modèle de données de MaxCompute doivent utiliser les nouvelles données du jour. À l'heure actuelle, les données Hologres sont utilisées comme couche ODS de l'entrepôt de données MaxCompute. MaxCompute n'a pas besoin d'importer de données et " lire directement "la table de données correspondant aux Hologres. Traitement complet du modèle des données incrémentales + complètes.

Cet article présentera principalement la pratique de développement de la source de données Hologres à lecture directe MaxCompute sous le schéma combiné de MaxCompute et Holgres.

L'accès MaxCompute à la source de données Hologres comprend les deux méthodes suivantes:

  • MaxCompute SQL accède à la source de données Hologres sous la forme d'une table externe
  • MaxCompute Spark accède directement à la source de données Hologres en mode JDBC

 

MaxCompute SQL table externe lire et écrire des hologres

Pour plus de détails, reportez-vous à la section de la documentation du produit MaxCompute - Tableau externe des hologres Ce qui suit n'est qu'une brève introduction.

Commencez par créer la table externe Hologres dans MaxCompute.

Lors de la création d'une table externe Hologres dans MaxCompute, vous devez spécifier le StorageHandler dans l'instruction DDL de création de table et configurer les paramètres du mécanisme de pilotage JDBC pour accéder à la source de données MC-Hologres. L'instruction de création de table est définie comme suit:

créer une table externe <table_name> ( 
  <col1_name> <data_type>, 
  <col2_name> <data_type>, 
  ...... 
) 
stockée par '<com.aliyun.odps.jdbc.JdbcStorageHandler>' 
location '<jdbc: postgresql: // <accessid>: <accesskey> @ <endpoint>: <port> / <database>? currentSchema = <schema> & preferQueryMode = simple & table = <holo_table_name> /> ' 
tblproperties ( 
  ' mcfed.mapreduce.jdbc.driver.class ' = 'org.postgresql.Driver', 
  'odps.federation.jdbc.target.db.type' = 'holo', 
  ['odps.federation.jdbc.colmapping' = '<col1: colonne1, col2: colonne2, col3: colonne3, ...> '] 
);

 

Les exemples sont les suivants:

créer une table externe s'il n'existe pas my_table_holo_jdbc 
( 
 id bigint, 
 chaîne de nom 
) 
stockée par 'com.aliyun.odps.jdbc.JdbcStorageHandler' 
LOCATION 'jdbc: postgresql: // LTAI4FzxmCwzb4BJqFce ****: hKZRYFjdT8ng -oew210utf003-cn-hangzhou-internal.MC-Hologres.aliyuncs.com:80/mc_test?currentSchema=public&preferQueryMode=simple&useSSL=false&table=holo/ ' 
TBLPROPERTIES ( 
  ' mcfed.maprediver 'org. .Driver ', 
  ' odps.federation.jdbc.target.db.type '=' holo ', 
  ' odps.federation.jdbc.colmapping '=' id: id, nom: nom ' 
);

La table externe Hologres créée sera mappée à une table dans la base de données sous l'instance Hologres spécifiée.

Deuxièmement, une fois la création terminée, utilisez MaxCompute SQL pour interroger la table externe afin d'obtenir les données de la table Hologres.

Des exemples de commandes sont les suivants:

 

- L'accès à la table externe de MC-Hologres doit ajouter les attributs suivants. 
set odps.sql.split.hive.bridge = true; 
set odps.sql.hive.compatible = true; 
--Query MC-Hologres external table data. 
sélectionnez * dans ma_table_holo_jdbc limite 10;

MaxCompute SQL peut écrire des données dans des tables externes Hologres en même temps, afin que les données de consommation traitées par MaxCompute puissent être directement importées dans Hologres. Avec l'aide du moteur d'analyse de stockage hautes performances Hologres, la meilleure expérience d'analyse peut être obtenue.

- L'accès à la table externe de MC-Hologres doit ajouter les attributs suivants. 
set odps.sql.split.hive.bridge = true; 
set odps.sql.hive.compatible = true; 
--Insère des données dans la table externe MC-Hologres. 
insert into my_table_holo_jdbc values ​​(12, 'alice'); 
--Query MC-Hologres external table data. 
sélectionnez * dans my_table_holo_jdbc;

 

MaxCompute Spark utilise une connexion JDBC pour accéder aux hologres

MaxCompute est nativement intégré au moteur d'analyse Apache Spark. Avec Spark, non seulement les données MaxCompute peuvent être analysées directement, mais MaxCompute Spark peut également utiliser JDBC pour se connecter à la source de données Hologres. Les utilisateurs habitués à utiliser Spark peuvent implémenter une logique métier plus flexible dans le code Spark.

L'auteur utilise les trois modes de soumission suivants pour vérifier comment Spark accède à Hologres. Pour plus de détails sur les modes pris en charge par MaxCompute Spark, veuillez consulter la documentation officielle des produits MaxCompute . Cet article ne sera pas développé.

Mode de soumission local

Les utilisateurs familiers avec MaxCompute Spark utilisent souvent ce mode pour effectuer des tests locaux afin de vérifier si la logique du code est correcte. Cet article est principalement utilisé pour vérifier que la méthode JDBC qui s'exécute via Spark peut normalement accéder à la source de données Hologres.

 

Exemple de code (PySpark):

spark = SparkSession \ 
    .builder \ 
    .appName ("MC spark") \ 
    .getOrCreate () 

jdbcDF = spark.read.format ("jdbc"). \ 
    options ( 
    url = 'jdbc: postgresql: //hgpostcn-cn-xxx-cn-shanghai.hologres.aliyuncs.com: 80 / test_holo', 
    dbtable = 'test', 
    user = 'xxx', # egAccess_id 
    password = ' xxx ', # egSecret_key 
    driver =' org.postgresql.Driver '). \ 
    load () 

jdbcDF.printSchema ()

Ici, nous utilisons la méthode de connexion JDBC de Spark pour nous connecter à Hologres via le pilote postgresql, accéder à la table de test dans la base de données test_holo et imprimer les informations de schéma de la table. Comme il s'agit d'un test local, choisissez d'utiliser le réseau public pour vous connecter aux hologres, où url est le nom de domaine d'accès au réseau public de l'instance d'hologres.

Utilisez spark-submit pour soumettre le travail:


#Local Spark access Holo spark-submit --master local --driver-class-path /drivers/postgresql-42.2.16.jar --jars /path/postgresql-42.2.16.jar /path/read_holo.py

Le pilote JDBC de Postgresql peut être téléchargé à partir du site officiel du pilote pg .

Vérifiez le journal d'impression d'étincelles après la soumission:

image.png

Les informations de schéma de la table de test imprimée sont cohérentes avec le schéma de la table de test créée dans Holo et l'accès est réussi. Pour les autres traitements de données sur les tables de source de données JDBC, vous pouvez vous référer à la documentation Apache Spark. Cet article explique principalement comment ouvrir l'accès, et les autres logiques de traitement ne seront pas développées.

Mode de soumission du cluster MaxCompute (yarn-cluster)

Exemple de code (PySpark):

spark = SparkSession \ 
    .builder \ 
    .appName ("MC spark") \ 
    .getOrCreate () 

jdbcDF = spark.read.format ("jdbc"). \ 
    options ( 
    url = 'jdbc: postgresql: //hgpostcn-cn-xxx-cn-shanghai-internal.hologres.aliyuncs.com: 80 / test_holo', 
    dbtable = 'test', 
    user = 'xxx', # egAccess_id 
    password = 'xxx', # egSecret_key 
    driver = 'org.postgresql.Driver'). \ 
    load () 

jdbcDF.printSchema ()

Comme il s'agit d'un mode de soumission de cluster, le code doit être téléchargé sur le cloud MaxCompute pour s'exécuter sur le cluster. Dans le cluster, MaxCompute est accessible via le nom de domaine réseau classique Hologres en mode intranet, et l'adresse réseau publique ne peut pas être utilisé ici.

 

Configurer le client MaxCompute Spark (transformation personnalisée pour l'adaptation MaxCompute, introduction et téléchargement associés, voir la documentation du produit pour plus de détails ) spark-defaults.conf, ajouter l'élément de paramètre spark.hadoop.odps.cupid.trusted.services.access.list, ajouter l'élément de paramètre classique adresse du nom de domaine réseau de l'instance d'hologres cible à laquelle il faut accéder. Le but de l'ajout de cette configuration est d'activer la stratégie réseau correspondant à l'instance Hologres dans l'environnement sandbox de fonctionnement sécurisé MaxCompute, sinon le cluster MaxCompute ne peut pas accéder aux services externes par défaut.

# OdpsAccount Info Setting 
spark.hadoop.odps.project.name = your_maxc_project 
spark.hadoop.odps.access.id = xxx 
spark.hadoop.odps.access.key = xxx 
# endpoint 
spark.hadoop.odps.end.point = http : //service.cn.maxcompute.aliyun.com/api 
spark.hadoop.odps.runtime.end.point = http://service.cn.maxcompute.aliyun-inc.com/api 

#Accéder à l'instance holo 
spark.hadoop .odps.cupid.trusted.services.access.list = hgprecn-cn-xxx-cn-shanghai-internal.hologres.aliyuncs.com:80

 

Utilisez spark-submit pour soumettre le travail:


#Local Spark Access Holo spark-submit --master yarn-cluster --driver-class-path /drivers/postgresql-42.2.16.jar --jars /path/postgresql-42.2.16.jar /path/read_holo.py

Après la soumission, vérifiez le journal d'impression Spark. Lorsque le travail est terminé normalement, il imprimera le journal du travail et l'adresse du lien de vue du travail de Spark-UI, qui peut être utilisé par les développeurs pour diagnostiquer plus en détail le travail.

image.png

Vérifiez les informations du travail MaxCompute Logview et Spark-UI Job View pour vérifier que le travail est exécuté avec succès.

Recherchez les erreurs dans le journal et ouvrez le lien de la vue du journal pour vérifier l'état d'exécution du travail.

image.png

Vérifiez que le statut du travail est Réussite et cliquez en même temps sur le bouton de sortie StdOut du travailleur sous master-0.

image.png

Voici le résultat de retour de jdbcDF.printSchema () dans le code Spark, qui est conforme aux attentes, et la vérification est terminée.

 

MaxCompute Spark fournit également l'interface utilisateur Web Spark pour le diagnostic des travaux. Vous pouvez y accéder en ouvrant l'adresse du lien de la vue des travaux dans le journal.

image.png

Cliquez sur le bouton stdout du pilote pour vérifier si l'impression de l'application répond aux attentes de l'entreprise:

image.png

Mode de soumission DataWorks

De plus en plus d'utilisateurs utilisent DataWorks comme système de planification des travaux MaxCompute, et les utilisateurs de DataWorks peuvent également facilement soumettre des travaux Spark à MaxCompute pour réaliser la logique d'accès aux hologres.

La première étape consiste à se connecter à la console Alibaba Cloud, à entrer dans l'espace de travail désigné par dataworks et à entrer dans le module de développement de données correspondant au projet.

image.png

La deuxième étape consiste à créer / ajuster les processus métier

1. Téléchargez le fichier jar jdbc postgresql sous le nœud MaxCompute dans le processus métier afin que le programme Spark puisse référencer le pilote. Notez qu'ici, vous devez choisir d'utiliser le type de ressource fichier (fichier).

image.png

2. Sous le nœud de ressource, téléchargez le code Python. Cet article a soumis le code pyspark pour le test.

image.png

3. Sélectionnez le nœud spark odps dans le canevas du processus métier et renseignez les informations de paramètre de la tâche Spark.

  • Sélectionnez le nœud ODPS Spark pris en charge par le moteur MaxCompute dans le canevas de processus métier

image.png

  • Double-cliquez sur l'icône du nœud ODPS Spark dans le canevas, modifiez le nœud de tâche et remplissez les informations sur la tâche.

Cet article utilise pyspark, donc le nœud choisit le langage python, et en même temps, dans l'option "sélectionner la ressource python principale", sélectionnez la ressource de fichier python qui vient d'être téléchargée.

Dans l'élément de configuration, ajoutez la liste blanche réseau de l'adresse cible des hologres pour cette tâche. L'adresse utilise toujours le nom de domaine réseau classique de l'instance Hologres, comme illustré dans la figure:

Élément de configuration: spark.hadoop.odps.cupid.trusted.services.access.list

Valeur de l'élément de configuration: hgpostcn-cn-xxx-cn-shanghai-internal.hologres.aliyuncs.com:80

Dans le même temps, dans l'option "Sélectionner la ressource de fichier", sélectionnez le fichier jar du pilote postgres téléchargé sur la ressource tout à l'heure.

image.png

Cliquez sur Enregistrer et soumettre.

4. Exécutez la tâche de nœud ODPS Spark dans dataworks pour vérification.

Cliquez sur "Run Node" et le journal des travaux sera imprimé au bas de la page Dataworks, qui contient l'adresse du lien Logview des informations de diagnostic du travail MaxCompute.

image.png

Recherchez les erreurs dans le journal et ouvrez le lien de la vue du journal pour vérifier l'état d'exécution du travail.

image.png

Vérifiez que le statut du travail est Réussite et cliquez en même temps sur le bouton de sortie StdOut du travailleur sous master-0.

image.png

Voici le résultat de retour de jdbcDF.printSchema () dans le code Spark, qui est conforme aux attentes, et la vérification est terminée.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43970890/article/details/115229661
conseillé
Classement