Utilisez le connecteur flink-dts-connector pour créer un programme Flink qui consomme les données de suivi depuis une instance de suivi des modifications Data Transmission Service (DTS).
Remarques sur l'utilisation
Le connecteur prend en charge les programmes Flink utilisant l'API DataStream, ainsi que l'API Table et SQL.
Si votre programme Flink utilise l'API Table et SQL, vous ne pouvez le configurer que pour consommer les données d'une seule table à la fois. Pour consommer les données de plusieurs tables, vous devez configurer et exécuter une tâche distincte pour chaque table.
Procédure
L'exemple suivant utilise IntelliJ IDEA Community Edition 2020.1 pour Windows afin d'illustrer la consommation de données de suivi avec le connecteur flink-dts-connector.
Créez une instance de suivi des modifications. Pour plus d'informations, consultez Créer une instance de suivi des modifications pour une instance ApsaraDB RDS for MySQL, Créer une instance de suivi des modifications pour un cluster PolarDB for MySQL, ou Créer une instance de suivi des modifications pour une instance ApsaraDB for Oracle.
Créez un ou plusieurs groupes de consommateurs. Pour plus d'informations, consultez Créer un groupe de consommateurs.
Téléchargez le fichier flink-dts-connector et décompressez-le.
Démarrez IntelliJ IDEA et cliquez sur Open or Import.
Dans la boîte de dialogue qui s'affiche, accédez au répertoire dans lequel vous avez décompressé le fichier flink-dts-connector. Développez les dossiers pour trouver le fichier Project Object Model (POM) : pom.xml.
Dans la boîte de dialogue qui s'affiche, sélectionnez Open as Project.
-
Ajoutez la dépendance suivante au fichier pom.xml :
<dependency> <groupId>com.alibaba.flink</groupId> <artifactId>flink-dts-connector</artifactId> <version>1.1.1-SNAPSHOT</version> <classifier>jar-with-dependencies</classifier> </dependency> -
Dans IntelliJ IDEA, développez les dossiers du projet et sélectionnez le fichier Java approprié en fonction du type d'API Flink utilisé par votre programme.
-
Si votre programme Flink utilise l'API DataStream, double-cliquez sur le fichier flink-dts-connector-master\src\test\java\com\alibaba\flink\connectors\dts\datastream\DtsExample.java et effectuez les étapes suivantes :
Dans la barre de menus supérieure, choisissez Run > Run....
Dans la fenêtre contextuelle, cliquez sur .
-
Dans le champ Program arguments, saisissez les paramètres et leurs valeurs comme indiqué dans l'exemple suivant. Cliquez ensuite sur Run pour démarrer le connecteur flink-dts-connector.
RemarquePour plus de détails sur les paramètres et la manière de trouver leurs valeurs, consultez la section Paramètres.
--broker-url dts-cn-******.******.***:****** --topic cn_hangzhou_rm_**********_dtstest_version2 --sid dts****** --user dtstest --password Test123456 --checkpoint 1624440043 -
La sortie indique que le programme suit avec succès les modifications de données de la base de données source. Après le démarrage, les enregistrements de modification de données dans le DataStream ressemblent à l'exemple suivant.
LazyParseRecord {operationType [HEARTBEAT], checkpoint [0@12006303@289540@2688@1625045211000]} LazyParseRecord {operationType [HEARTBEAT], checkpoint [0@12006307@290047@2688@1625045212000]} LazyParseRecord {operationType [UPDATE], checkpoint [0@12006305@290016@2688@1625045212000]} LazyParseRecord {operationType [HEARTBEAT], checkpoint [0@12006308@290047@2688@1625045214000]} LazyParseRecord {operationType [HEARTBEAT], checkpoint [0@12006309@290047@2688@1625045215000]} LazyParseRecord {operationType [HEARTBEAT], checkpoint [0@12006310@290047@2688@1625045216000]} LazyParseRecord {operationType [HEARTBEAT], checkpoint [0@12006311@290047@2688@1625045217000]}RemarquePour afficher les détails des enregistrements de modification de données, connectez-vous à l'interface utilisateur Task Manager de votre programme Flink.
-
Si votre programme Flink utilise l'API Table et SQL, double-cliquez sur le fichier flink-dts-connector-master\src\test\java\com\alibaba\flink\connectors\dts\sql\DtsTableISelectTCaseTest.java et effectuez les étapes suivantes :
RemarqueUn seul fichier
DtsTableISelectTCaseTest.javapermet de configurer et de consommer les données de suivi d'une seule table. Pour consommer les données de plusieurs tables, vous devez configurer et exécuter une tâche distincte pour chaque table.-
Mettez en commentaire la ligne
properties.loaden ajoutant le préfixe//./*Loads the parameter values that you set on the platform page into the Properties object.*/ //properties.load(new StringReader(new String(Files.readAllBytes(Paths.get(configFilePath)), StandardCharsets.UTF_8))); Définissez la table unique à partir de laquelle vous souhaitez consommer les données.
-
Définissez les paramètres de l'instance de suivi des modifications. Pour plus de détails sur les paramètres et la manière de trouver leurs valeurs, consultez la section Paramètres.
public static void main(String[] args) throws Exception { setup(args); final String createTable = "create table `dts` (\n" + " `ts` TIMESTAMP(3) METADATA FROM 'timestamp',\n" + " `id` bigint,\n" + " `name` varchar,\n" + " `age` bigint,\n" + " WATERMARK FOR ts AS ts - INTERVAL '5' SECOND" + ") with (\n" + "'connector' = 'dts'," + "'dts.server' = 'dts-cn-xxx:18001'," + "'topic' = 'cn_hangzhou_rm_xxx_dtstest_version2'," + "'dts.sid' = 'dtsxxx', " + "'dts.user' = 'dtstest', " + "'dts.password' = 'xxx'," + "'dts.checkpoint' = '1624440043', " + "'dts-cdc.table.name' = 'dtstestdata.order'," + "'format' = 'dts-cdc')"; } En haut de l'interface IntelliJ IDEA, cliquez sur Run'DtsTableISelectTCaseTest' pour démarrer le connecteur flink-dts-connector.
-
La sortie indique que le programme suit avec succès les modifications de données de la base de données source. Après le démarrage, le terminal affiche les journaux de modifications (changelog). Les événements de mise à jour apparaissent par paires : la valeur avant la mise à jour (-U) et la valeur après la mise à jour (+U).
######> (false,-U(2021-06-23T20:32:17.391,null,null,null)) ######> (true,+U(2021-06-23T20:32:17.391,null,null,null)) ######> (false,-U(2021-06-23T20:32:45.604,null,null,null)) ######> (true,+U(2021-06-23T20:32:45.604,null,null,null)) ######> (false,-U(2021-06-30T17:26:52.201,null,null,null)) ######> (true,+U(2021-06-30T17:26:52.201,null,null,null)) ######> (false,-U(2021-06-30T19:19:26.975,null,null,null)) ######> (true,+U(2021-06-30T19:19:26.975,null,null,null))RemarquePour afficher les détails des enregistrements de modification de données, connectez-vous à l'interface utilisateur Task Manager de votre programme Flink.
-
-
Paramètres
|
Paramètre DataStream API |
Paramètre Table API |
Description |
Comment l'obtenir |
|
|
|
L'endpoint et le port de l'instance de suivi des modifications. Remarque
|
Dans la console DTS, cliquez sur l'ID de l'instance de suivi des modifications cible. Sur la page View Task Settings, vous trouverez le Topic, l'endpoint et le port. |
|
|
|
Le sujet de suivi de l'instance de suivi des modifications. |
|
|
|
|
L'ID du groupe de consommateurs. |
Dans la console DTS, cliquez sur l'ID de l'instance de suivi des modifications cible, puis cliquez sur Consume Data. Vous trouverez l'ID et le Account du groupe de consommateurs. Remarque
Le mot de passe du nom d'utilisateur du groupe de consommateurs est celui que vous avez spécifié lors de la création du groupe de consommateurs. |
|
|
|
Le nom d'utilisateur du groupe de consommateurs. Avertissement
Le connecteur flink-dts-connector fourni dans cette rubrique gère automatiquement le formatage requis du nom d'utilisateur. Si vous utilisez un client différent, vous devez formater manuellement le nom d'utilisateur sous la forme |
|
|
|
|
Le mot de passe du nom d'utilisateur. |
|
|
|
|
L'horodatage Unix à partir duquel le connecteur flink-dts-connector commence à consommer les données, par exemple 1624440043. Remarque
Le décalage du consommateur (consumer offset) est utile dans les scénarios suivants :
|
Le décalage du consommateur doit se situer dans la plage de données de l'instance de suivi des modifications. Sur la page View Task Settings de l'instance de suivi des modifications DTS, vous pouvez trouver les heures de début et de fin dans le champ Data Range. Vous devez définir le décalage du consommateur sur une heure comprise dans cette plage et la convertir en horodatage Unix. Remarque
Utilisez un moteur de recherche en ligne pour trouver un convertisseur d'horodatage Unix. |
|
S/O |
|
La table dont il faut suivre les modifications. Une seule table est prise en charge par tâche. Utilisez le format suivant :
|
Dans la console DTS, cliquez sur l'ID de l'instance de suivi des modifications cible. Sur la page View Task Settings, cliquez sur View Objects en haut à droite pour trouver les noms de base de données et de table des objets. |
FAQ
|
Message d'erreur |
Cause possible |
Solution |
|
Le module DStore, utilisé par DTS pour lire les données incrémentielles, a basculé. Cela entraîne la perte du décalage du consommateur du programme Flink. |
Ne redémarrez pas le programme. Trouvez plutôt le dernier décalage du consommateur connu et transmettez-le en tant que paramètre |