Connectez Apache Flink à LindormTable et utilisez les tables Lindorm comme tables de dimension ou tables de résultats dans vos jobs Flink. Vous pouvez accéder à ces tables via Flink SQL ou Flink DataStream.
Contexte
Vous pouvez utiliser Lindorm LindormTable comme table de dimension ou table de résultats dans Flink, et y accéder via Flink SQL ou Flink DataStream.
Choisir une méthode de connexion
Dans LindormTable, les tables sont classées en deux catégories selon leur mode de création : les tables HBase (créées et alimentées via l'API HBase) et les tables SQL (créées et alimentées via Lindorm SQL). L'accès à ces deux types de tables nécessite des interfaces différentes. Par conséquent, avant de créer un job Flink, vous devez déterminer le type de connecteur, puis l'adresse de connexion de LindormTable correspondante.
Déterminer le type de table à accéder
Dans Lindorm, utilisez Lindorm SQL pour identifier le type de LindormTable qu'un job Flink en cours de développement doit accéder :
Utilisez lindorm-cli (ou directement Lindorm Insight ou DMS) pour vous connecter au moteur de tables larges de Lindorm.
-
Exécutez l'instruction SQL suivante pour vérifier l'attribut
IS_HBASE_LIKEde la table.Si la valeur de l'attribut est TRUE, il s'agit d'une table HBase.
Si la valeur de l'attribut est FALSE, il s'agit d'une table SQL.
SHOW TABLE VARIABLES FROM table_name LIKE 'IS_HBASE_LIKE';
Pour savoir comment utiliser
lindorm-cliafin de vous connecter au moteur de tables larges, consultez la rubrique Se connecter et utiliser le moteur de tables larges avec Lindorm-cli.Pour connaître la syntaxe détaillée de
SHOW TABLE VARIABLE, reportez-vous à la documentation SHOW VARIABLES.
Choisir le type de connecteur
Selon la forme du produit Flink que vous avez sélectionnée, décidez quel connecteur utiliser pour accéder à LindormTable.
|
Type de table |
Flink communautaire |
Realtime Compute for Apache Flink |
|
Table HBase |
(Pris en charge en tant que table de dimension et table de résultats) |
Connecteur Lindorm pour base de données multi-modèles cloud native (Pris en charge en tant que table de dimension et table de résultats) |
|
Table SQL |
(Pris en charge en tant que table de résultats) |
Connecteur Lindorm pour base de données multi-modèles cloud native (Pris en charge en tant que table de dimension et table de résultats) |
Realtime Compute for Apache Flink est un service Flink managé sur Alibaba Cloud. Pour plus d'informations, consultez la rubrique Realtime Compute for Apache Flink. Notez qu'un cluster Flink construit avec Flink open source sur ECS Alibaba Cloud reste classé comme Flink communautaire dans le tableau ci-dessus.
Obtenir les informations de connexion de LindormTable
Scénario 1 : Utilisation du connecteur HBase open source ou du connecteur Lindorm pour base de données multi-modèles cloud native Dans ce scénario, l'adresse de connexion doit être l'adresse d'accès à l'API Java HBase (VPC) du moteur de tables larges. Sur la page des détails de l'instance Lindorm, cliquez sur Database connections dans le menu de gauche, puis sélectionnez l'onglet Wide Table Engine. Dans la zone Connect through HBase-compatible address, récupérez l'adresse VPC au format
ld-<instance-ID>-proxy-lindorm.lindorm.rds.aliyuncs.com:30020. Dans la zone Connect through MySQL-compatible address, récupérez l'adresse compatible MySQL au formatld-<instance-ID>-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060.Scénario 2 : Utilisation du connecteur JDBC Dans ce scénario, l'adresse de connexion doit être l'adresse compatible MySQL (VPC) du moteur de tables larges. Sur la page des détails de l'instance Lindorm, cliquez sur Database connections dans le volet de navigation de gauche, puis sélectionnez l'onglet Wide Table Engine. Dans la zone Connect through HBase-compatible address, vous pouvez consulter l'adresse VPC de l'API Java HBase (au format
ld-<instance-ID>-proxy-lindorm.rds.aliyuncs.com:30020).
Si le job Flink utilise un utilisateur Lindorm nouvellement créé pour accéder à LindormTable, assurez-vous que cet utilisateur dispose des autorisations de lecture et d'écriture sur les tables Flink. Pour savoir comment accorder des autorisations, consultez la rubrique Accorder des autorisations à des utilisateurs spécifiques.
Pour obtenir des descriptions détaillées des différentes adresses de connexion des tables larges Lindorm, consultez la rubrique Afficher les adresses de connexion du moteur de tables larges.
Méthode d'accès à LindormTable par un job Flink
Vous pouvez développer votre solution en suivant l'approche générale du framework de calcul en temps réel sélectionné. Pour accéder à LindormTable dans un job, reportez-vous aux documents suivants en fonction du connecteur choisi, afin de permettre à votre job de calcul d'accéder à LindormTable.
Prérequis
-
Développer un job utilisant Flink communautaire pour accéder à LindormTable
Pour utiliser le connecteur HBase open source afin d'accéder à LindormTable, assurez-vous que la version du moteur de tables larges est ultérieure ou égale à 2.4.3.
Pour utiliser le connecteur JDBC open source afin d'accéder à LindormTable, assurez-vous que la version du moteur de tables larges est ultérieure ou égale à 2.6.5.2 et que vous avez activé la fonctionnalité de compatibilité MySQL.
Pour savoir comment afficher ou mettre à niveau la version actuelle, consultez les rubriques Notes de version de LindormTable et Mettre à niveau la version mineure du moteur d'une instance Lindorm.
Si vous utilisez Realtime Compute for Apache Flink pour développer un job accédant à LindormTable, aucune restriction de version ne s'applique au moteur de tables larges.
Assurez-vous que l'environnement où se trouve le cluster Flink dispose d'une connectivité réseau avec l'instance Lindorm et que les adresses IP du client ont été ajoutées à la liste blanche de Lindorm. Pour savoir comment ajouter des adresses IP à la liste blanche, consultez la rubrique Configurer une liste blanche.
Développement de jobs avec Flink communautaire
Connecteur HBase open source
Lorsque vous utilisez Flink communautaire pour développer un job accédant aux tables HBase, si vous souhaitez accéder aux tables via Internet ou si l'instance Lindorm cible est une instance mono-nœud Lindorm, vous devez mettre à niveau le SDK et modifier la configuration avant d'effectuer les opérations suivantes.
Pour plus de détails, consultez l'étape 1 de la rubrique Se connecter et utiliser LindormTable via l'API Java HBase.
Pour savoir comment utiliser le connecteur HBase open source afin de créer une table de dimension et une table de résultats, consultez la documentation du connecteur HBase.
Connecteur JDBC open source
Lorsque vous utilisez le connecteur JDBC open source pour accéder à une LindormTable, seule l'utilisation de LindormTable en tant que table de résultats est actuellement prise en charge. Pour une utilisation globale, reportez-vous à la documentation officielle du connecteur JDBC. Toutefois, certains points requièrent une attention particulière, comme indiqué ci-dessous :
-
Exigences en matière de dépendances Contrairement à la plage relativement large de versions de packages de dépendances indiquée dans la documentation officielle, les versions des packages de dépendances utilisées par le connecteur JDBC pour accéder aux tables Lindorm sont actuellement limitées à la liste suivante :
flink-connector-jdbc-core-4.0.0-2.0.jarflink-connector-jdbc-mysql-4.0.0-2.0.jarmysql-connector-j-8.3.0.jar
Le package de dépendance du pilote JDBC MySQL peut être téléchargé depuis la communauté.
-
Paramètres du connecteur JDBC Étant donné que l'utilisation en tant que table source et table de dimension n'est pas prise en charge, les paramètres liés à ces fonctionnalités ne sont pas pris en charge (tels que les paramètres préfixés par scan comme
scan.fetch-size, et les paramètres préfixés parlookupcommelookup.cache). Recommandations pour certains paramètres du connecteur JDBC :url : Nous vous recommandons de suivre la rubrique Utiliser les API Java JDBC pour développer des applications pour la configuration.
username : Utilisez le nom d'utilisateur créé dans l'instance Lindorm.
password : Le mot de passe associé au nom d'utilisateur.
connector, table-name : Suivez les recommandations de la communauté du connecteur JDBC.
Paramètres sink : Ajustez finement en fonction de la situation réelle du job.
-
Mappage des types de données Le mappage entre les types de données Flink et les types de données Lindorm peut généralement suivre celui des types de données MySQL (consultez la section Mappage des types de données de la documentation du connecteur JDBC). Cependant, certains types de données dans Lindorm ne correspondent pas à ceux de MySQL. Par exemple, les types MySQL suivants, prétendument pris en charge par le connecteur JDBC, ne sont pas pris en charge par Lindorm :
Type MEDIUMINT
Type DATETIME
Types UNSIGNED autres que BIGINT UNSIGNED
L'exemple suivant utilise Flink SQL pour définir un job accédant à une LindormTable via le connecteur JDBC. Dans cet exemple, supposons qu'une table nommée testflink a été définie dans le moteur de tables larges de Lindorm.
# Create Flink table and start the job
CREATE TABLE source_table(
c1 INT,
c2 STRING
) WITH (
'connector' = 'datagen',
'rows-per-second' = '2',
'fields.c2.length' = '5',
'fields.c1.min' = '1',
'fields.c1.max' = '100'
);
CREATE TABLE sink_table(
c1 INT,
c2 STRING
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://ld-xxxxx-proxy-lindorm.lindorm.rds.aliyuncs.com:33060/default?sslMode=disabled&allowPublicKeyRetrieval=true&useServerPrepStmts=true&useLocalSessionState=true&rewriteBatchedStatements=true&cachePrepStmts=true&prepStmtCacheSize=300&prepStmtCacheSqlLimit=50000000',
'username' = 'root',
'password' = 'root',
'table-name' = 'testflink'
);
INSERT INTO sink_table SELECT * FROM source_table;
Développement de jobs avec Realtime Compute for Apache Flink
Connecteur Lindorm pour base de données multi-modèles cloud native
Dans le développement de jobs Realtime Compute for Apache Flink, vous pouvez développer des jobs accédant au moteur de tables larges de Lindorm en utilisant Flink SQL. Pour plus de détails sur le développement de jobs Realtime Compute for Apache Flink, consultez la rubrique Aperçu du développement de jobs.
Pour savoir comment utiliser le connecteur afin de créer une table de dimension et une table de résultats, consultez la documentation Connecteur Lindorm pour base de données multi-modèles cloud native.