Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:Ingestion de journaux en temps réel

Dernière mise à jour :Sep 18, 2026

Cette rubrique explique comment créer rapidement une tâche de synchronisation de données de Kafka vers Hologres afin d'ingérer des données de journal en temps réel à l'aide de la console Realtime Compute for Apache Flink.

Prérequis

  • Assurez-vous que votre utilisateur RAM ou rôle RAM dispose des autorisations nécessaires pour accéder à la console Realtime Compute for Apache Flink. Pour plus d'informations, consultez la section Autorisations.

  • Vous avez créé un espace de travail Flink. Pour plus d'informations, consultez la section Créer un espace de travail.

  • Stockage amont et aval

    Remarque

    Vos instances ApsaraMQ for Kafka et Hologres doivent se trouver dans la même région et le même VPC que votre espace de travail Realtime Compute for Apache Flink. Dans le cas contraire, vous devez établir une connectivité réseau. Pour plus d'informations, consultez les sections Accéder aux services via des VPC ou Accéder à Internet.

Étape 1 : Configurer une liste blanche d'adresses IP

Pour permettre à Flink d'accéder à vos instances Kafka et Hologres, ajoutez le bloc CIDR de votre espace de travail Flink aux listes blanches d'adresses IP de Kafka et Hologres.

  1. Obtenez le bloc CIDR du VPC de votre espace de travail Flink.

    1. Connectez-vous à la console Realtime Compute for Apache Flink.

    2. Dans la colonne Actions de l'workspace cible, choisissez More > Workspace Details.

    3. Dans la boîte de dialogue Workspace Details, recherchez le CIDR block du vSwitch.

      La boîte de dialogue affiche les informations de base de l'espace de travail ainsi qu'une liste de vSwitches. Dans la colonne Bloc CIDR, consultez le bloc CIDR correspondant à chaque zone de disponibilité. Notez ce bloc CIDR pour l'étape suivante.

  2. Ajoutez le bloc CIDR de l'espace de travail Flink à la liste blanche d'adresses IP de votre instance Kafka.

    Vous devez configurer la liste blanche d'adresses IP pour un endpoint VPC. Pour connaître la procédure détaillée, consultez la section Configurer une liste blanche d'adresses IP. Dans la boîte de dialogue de modification de la liste blanche, cliquez sur Ajouter une adresse IP à la liste blanche pour ajouter le bloc CIDR.

  3. Ajoutez le bloc CIDR de l'espace de travail Flink à la liste blanche d'adresses IP de votre instance Hologres.

    Connectez-vous à votre instance Hologres et configurez sa liste blanche d'adresses IP. Pour connaître la procédure détaillée, consultez la section Liste blanche d'adresses IP. Sur la page de configuration de la liste blanche dans le Security Center de HoloWeb, saisissez le bloc CIDR dans le champ Adresse IP de la boîte de dialogue Modifier la liste blanche d'adresses IP, puis cliquez sur OK.

Étape 2 : Préparer les données de test Kafka

Utilisez le connecteur Faker de Realtime Compute for Apache Flink pour générer des données et les écrire dans ApsaraMQ for Kafka. Suivez les étapes ci-dessous dans la console de développement de Realtime Compute for Apache Flink.

  1. Dans la console ApsaraMQ for Kafka, créez un topic nommé users.

    Pour plus d'informations, consultez la section Créer un topic.

  2. Créez une tâche pour écrire des données dans ApsaraMQ for Kafka.

    1. Connectez-vous à la console de développement de Realtime Compute for Apache Flink.

    2. Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.

    3. Dans le volet de navigation de gauche, choisissez Development > ETL.

    4. Cliquez sur l'icône image, puis cliquez sur New Blank Stream Draft. Saisissez un Name et sélectionnez une Engine Version.

      Realtime Compute for Apache Flink propose également divers modèles de code et de synchronisation de données. Chacun inclut des cas d'utilisation spécifiques, des exemples de code et des instructions. Cliquez sur un modèle pour apprendre rapidement les fonctionnalités et la syntaxe de Realtime Compute for Apache Flink et implémenter votre logique métier. Pour plus d'informations, consultez les sections Modèles de code et Modèles de synchronisation de données.

      Paramètre

      Description

      Exemple

      Name

      Le nom de la tâche.

      Remarque

      Le nom de la tâche doit être unique au sein de l'espace de travail actuel.

      flink-test

      Engine Version

      La version du moteur Flink pour la tâche actuelle.

      Sélectionnez une version étiquetée Recommended ou Stable pour une fiabilité et des performances accrues. Pour plus d'informations sur les versions du moteur, consultez les sections Notes de version et Versions du moteur.

      vvr-8.0.8-flink-1.17

    5. Cliquez sur Create.

    6. Rédigez les instructions SQL pour la tâche.

      Copiez le code suivant dans l'éditeur et modifiez les paramètres en fonction de votre environnement.

      CREATE TEMPORARY TABLE source (
        id INT,
        first_name STRING,
        last_name STRING,
        `address` ROW<`country` STRING, `state` STRING, `city` STRING>,
        event_time TIMESTAMP
      ) WITH (
        'connector' = 'faker',
        'number-of-rows' = '100',
        'rows-per-second' = '10',
        'fields.id.expression' = '#{number.numberBetween ''0'',''1000''}',
        'fields.first_name.expression' = '#{name.firstName}',
        'fields.last_name.expression' = '#{name.lastName}',
        'fields.address.country.expression' = '#{Address.country}',
        'fields.address.state.expression' = '#{Address.state}',
        'fields.address.city.expression' = '#{Address.city}',
        'fields.event_time.expression' = '#{date.past ''15'',''SECONDS''}'
      );
      
      CREATE TEMPORARY TABLE sink (
        id INT,
        first_name STRING,
        last_name STRING,
        `address` ROW<`country` STRING, `state` STRING, `city` STRING>,
        `timestamp` TIMESTAMP METADATA
      ) WITH (
        'connector' = 'kafka',
        'properties.bootstrap.servers' = 'alikafka-host1.aliyuncs.com:9092,alikafka-host2.aliyuncs.com:9092,alikafka-host3.aliyuncs.com:9092',
        'topic' = 'users',
        'format' = 'json',
        'properties.enable.idempotence'='false'
      );
      
      INSERT INTO sink SELECT * FROM source;

      Le tableau suivant décrit les paramètres que vous devez modifier.

      Paramètre

      Valeur d'exemple

      Description

      properties.bootstrap.servers

      alikafka-host1.aliyuncs.com:9092,alikafka-host2.aliyuncs.com:9092,alikafka-host3.aliyuncs.com:9092

      Les endpoints des brokers ApsaraMQ for Kafka.

      Une liste d'endpoints de brokers séparés par des virgules au format « hôte:port ». Vous pouvez trouver l'endpoint Domain Name du VPC dans la section Endpoint Information de la page Instance Details.

      topic

      users

      Le nom du topic ApsaraMQ for Kafka.

  3. Démarrez la tâche.

    1. Sur la page Development > ETL, cliquez sur Deploy.

    2. Dans la boîte de dialogue Deploy draft, cliquez sur Confirm.

    3. Configurez les ressources pour la tâche. Pour plus d'informations, consultez la section Configurer les ressources d'une tâche.

    4. Sur la page O&M > Deployments, recherchez le déploiement cible et cliquez sur Start dans la colonne Actions. Pour plus d'informations sur la configuration de démarrage, consultez la section Démarrer un déploiement.

    5. Sur la page Deployments, vous pouvez surveiller les informations d'exécution et l'état du déploiement.

      Étant donné que la source Faker génère un flux borné, l'état du déploiement passe à FINISHED environ une minute après le démarrage. Une fois le déploiement terminé, les données ont été écrites dans le topic « users ». Le code suivant présente un exemple de données au format JSON.

      {
        "id": 765,
        "first_name": "Barry",
        "last_name": "Pollich",
        "address": {
          "country": "United Arab Emirates",
          "state": "Nevada",
          "city": "Powlowskifurt"
        }
      }

Étape 3 : Créer et démarrer une tâche de synchronisation de données

Flink CDC

  1. Connectez-vous à la console de développement de Realtime Compute for Apache Flink pour créer une tâche de synchronisation de données.

    1. Connectez-vous à la console Realtime Compute for Apache Flink.

    2. Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.

    3. Dans le volet de navigation de gauche, choisissez Development > Data Ingestion.

    4. Cliquez sur l'icône image, puis cliquez sur New Draft. Saisissez un name et sélectionnez une engine version.

      Paramètre

      Description

      Exemple

      Name

      Le nom de la tâche.

      Remarque

      Le nom de la tâche doit être unique au sein du projet.

      flink-test

      Engine Version

      La version du moteur Flink pour la tâche.

      Sélectionnez une version étiquetée Recommended ou Stable. Ces versions offrent une fiabilité et des performances supérieures. Pour plus d'informations sur les versions du moteur, consultez les sections Notes de version et Versions du moteur.

      vvr-8.0.8-flink-1.17

    5. Cliquez sur Create.

  2. Rédigez une tâche Flink CDC. Copiez le code suivant dans l'éditeur et mettez à jour les paramètres en fonction de votre environnement.

    La tâche suivante synchronise les données de table au format JSON du topic users dans Kafka vers la table users du schéma test_schema de la base de données flink_test_db dans Hologres.

    source:
      type: kafka
      name: Kafka Source
      properties.bootstrap.servers: alikafka-host1.aliyuncs.com:9092,alikafka-host2.aliyuncs.com:9092,alikafka-host3.aliyuncs.com:9092
      topic: users
      scan.startup.mode: earliest-offset
      value.format: json
      json.infer-schema.flatten-nested-columns.enable: true
    
    sink:
      type: hologres
      name: Hologres Sink
      endpoint: hgpostcn-****-cn-beijing-vpc.hologres.aliyuncs.com:80
      dbname: flink_test_db
      username: ******
      password: **
      sink.type-normalize-strategy: ONLY_BIGINT_OR_TEXT
    
    transform:
      - source-table: \.*.\.*
        projection: \*
        primary-keys: id
        
    route:
      - source-table: users
        sink-table: test_schema.users

    Le tableau suivant décrit les paramètres à modifier.

    Paramètre

    Exemple

    Description

    properties.bootstrap.servers

    alikafka-host1.aliyuncs.com:9092,alikafka-host2.aliyuncs.com:9092,alikafka-host3.aliyuncs.com:9092

    Les adresses des brokers Kafka.

    Le format est une liste d'entrées hôte:port séparées par des virgules. Vous pouvez obtenir l'Endpoint de nom de domaine pour le type de réseau VPC depuis la section Informations réseau de la page détails de l'instance.

    topic

    users

    Le nom du topic Kafka.

    endpoint

    hgpostcn-****-cn-beijing-vpc.hologres.aliyuncs.com:80

    L'endpoint de l'instance Hologres.

    Le format est <ip>:<port>. Vous pouvez obtenir l'endpoint VPC depuis la section Informations réseau de la page détails de l'instance dans la console Hologres.

    username

    Le nom d'utilisateur et le mot de passe pour la base de données Hologres. Saisissez l'AccessKey ID et l'AccessKey Secret de votre compte Alibaba Cloud.

    Important

    Pour éviter toute fuite de votre paire de clés AccessKey, utilisez la gestion des variables pour spécifier votre AccessKey ID et votre AccessKey Secret. Pour plus d'informations, consultez la section Gérer les variables.

    password

    dbname

    flink_test_db

    Le nom de la base de données Hologres.

    source-table

    users

    La table source. Par défaut, le nom du topic est utilisé.

    sink-table

    test_schema.users

    La table de destination. Spécifiez la table au format schema.table_name.

  3. Cliquez sur Domain Name Endpoint.

  4. Sur la page Network Information > instance details, cliquez sur Network Information.

  5. Sur la page instance details > Deployments, recherchez le déploiement cible et cliquez sur Start dans la colonne Actions. Pour plus d'informations sur les configurations de démarrage des tâches, consultez la section Démarrer une tâche.

    Une fois la tâche démarrée, vous pouvez consulter ses informations d'exécution et son état sur la page Déploiements. Cette page affiche une liste de déploiements avec des métriques telles que État, score de santé, CPU et mémoire, et propose des actions telles que Démarrer et Arrêter.

SQL

  1. Connectez-vous à la console de développement de Realtime Compute for Apache Flink pour créer une tâche de synchronisation de données.

    1. Connectez-vous à la console Realtime Compute for Apache Flink.

    2. Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.

    3. Dans le volet de navigation de gauche, choisissez Development > ETL, puis cliquez sur New.

    4. Cliquez sur l'icône image, puis cliquez sur New Blank Stream Draft. Saisissez un name et sélectionnez une engine version.

      Paramètre

      Description

      Exemple

      Name

      Le nom de la tâche.

      Remarque

      Le nom de la tâche doit être unique au sein du projet.

      flink-test

      Engine Version

      La version du moteur Flink pour la tâche.

      Sélectionnez une version étiquetée Recommended ou Stable. Ces versions offrent une fiabilité et des performances supérieures. Pour plus d'informations sur les versions du moteur, consultez les sections Notes de version et Versions du moteur.

      vvr-8.0.8-flink-1.17

    5. Cliquez sur Create.

  2. Rédigez la tâche SQL. Copiez le code suivant dans l'éditeur SQL et mettez à jour les paramètres en fonction de votre environnement.

    Vous pouvez utiliser une instruction INSERT INTO pour synchroniser les données du topic users dans Kafka vers la table users de la base de données flink_test_db de Hologres.

    Hologres offre des optimisations spéciales pour les types de données JSON et JSONB. Vous pouvez utiliser une instruction INSERT INTO pour écrire des données JSON imbriquées dans Hologres.

    Cette méthode nécessite de créer d'abord la table users dans Hologres, puis d'exécuter les instructions SQL suivantes pour écrire les données dans la table.

    CREATE TEMPORARY TABLE kafka_users (
      `id` INT NOT NULL,
      `address` STRING, -- The data in this column is nested JSON.
      `offset` BIGINT NOT NULL METADATA,
      `partition` BIGINT NOT NULL METADATA,
      `timestamp` TIMESTAMP METADATA,
      `date` AS CAST(`timestamp` AS DATE),
      `country` AS JSON_VALUE(`address`, '$.country')
    ) WITH (
      'connector' = 'kafka',
      'properties.bootstrap.servers' = 'alikafka-host1.aliyuncs.com:9092,alikafka-host2.aliyuncs.com:9092,alikafka-host3.aliyuncs.com:9092',
      'topic' = 'users',
      'format' = 'json',
      'json.infer-schema.flatten-nested-columns.enable' = 'true', -- Automatically expand nested columns.
      'scan.startup.mode' = 'earliest-offset'
    );
    
    CREATE TEMPORARY TABLE holo (
      `id` INT NOT NULL,
      `address` STRING,
      `offset` BIGINT,
      `partition` BIGINT,
      `timestamp` TIMESTAMP,
      `date` DATE,
      `country` STRING
    ) WITH (
      'connector' = 'hologres',
      'endpoint' = 'hgpostcn-****-cn-beijing-vpc.hologres.aliyuncs.com:80',
      'username' = '******',
      'password' = '******',
      'dbname' = 'flink_test_db',
      'tablename' = 'users'
    );
    
    INSERT INTO holo
    SELECT * FROM kafka_users;

    Le tableau suivant décrit les paramètres à modifier.

    Paramètre

    Exemple

    Description

    properties.bootstrap.servers

    alikafka-host1.aliyuncs.com:9092,alikafka-host2.aliyuncs.com:9092,alikafka-host3.aliyuncs.com:9092

    Les adresses des brokers Kafka.

    Le format est une liste d'entrées hôte:port séparées par des virgules. Vous pouvez obtenir l'Endpoint de nom de domaine pour le type de réseau VPC depuis la section Informations réseau de la page détails de l'instance.

    topic

    users

    Le nom du topic Kafka.

    endpoint

    hgpostcn-****-cn-beijing-vpc.hologres.aliyuncs.com:80

    L'endpoint de l'instance Hologres.

    Le format est <ip>:<port>. Vous pouvez obtenir l'endpoint VPC depuis la section Informations réseau de la page détails de l'instance dans la console Hologres.

    username

    Le nom d'utilisateur et le mot de passe pour la base de données Hologres. Saisissez l'AccessKey ID et l'AccessKey Secret de votre compte Alibaba Cloud.

    Important

    Pour éviter toute fuite de votre paire de clés AccessKey, utilisez la gestion des variables pour spécifier votre AccessKey ID et votre AccessKey Secret. Pour plus d'informations, consultez la section Gérer les variables.

    password

    dbname

    flink_test_db

    Le nom de la base de données Hologres.

    tablename

    users

    Le nom de la table Hologres.

    Remarque
    • Si vous utilisez une instruction INSERT INTO pour synchroniser les données, vous devez créer au préalable la table users et ses colonnes dans la base de données de destination.

    • Si le schéma n'est pas public, vous devez spécifier le paramètre tablename au format schema.table_name.

  3. Cliquez sur Save.

  4. Sur la page Development > Data Ingestion, cliquez sur Deploy.

  5. Sur la page O&M > Domain Name Endpoint, recherchez le déploiement cible et cliquez sur Network Information dans la colonne instance details. Pour plus d'informations sur les configurations de démarrage des tâches, consultez la section Démarrer une tâche.

    Une fois la tâche démarrée, vous pouvez consulter ses informations d'exécution et son état sur la page Déploiements. Cette page affiche une liste de déploiements avec des métriques telles que État, score de santé, CPU et mémoire, et propose des actions telles que Démarrer et Arrêter.

Étape 4 : Afficher le résultat complet de la synchronisation

  1. Connectez-vous à la console de gestion Hologres.

  2. Sur la page Network Information, cliquez sur le nom de votre instance cible.

  3. Dans le coin supérieur droit de la page, cliquez sur instance details.

  4. Sur l'onglet Save, affichez le schéma de table et les données de la table users synchronisée dans la base de données flink_test_db.

    Dans l'arborescence de navigation de gauche, développez le nom de votre instance > flink_test_db > test_schema > Tables. La table users synchronisée apparaît.

    Le schéma et les données de la table synchronisée sont les suivants.

    • Schéma de table

      Double-cliquez sur le nom de la table users pour afficher le schéma de table.

      Le schéma de la table users contient les champs suivants : id (BIGINT, clé primaire), first_name (TEXT), last_name (TEXT), address.country (TEXT), address.state (TEXT) et address.city (TEXT).

      Remarque

      Lors de la synchronisation complète des données, nous vous recommandons de définir la partition et le décalage (offset) des métadonnées Kafka comme clé primaire pour la table Hologres. Cela évite la duplication des données en cas de basculement de la tâche et de retransmission des données.

    • Données de table

      Dans le coin supérieur droit de la page de la table users, cliquez sur Development. Saisissez la commande suivante et cliquez sur ETL.

      SELECT * FROM test_schema.users;

      La commande renvoie le résultat suivant.

      La requête renvoie plusieurs lignes. Cela confirme que les enregistrements ont été synchronisés avec succès vers la table users. Chaque ligne renvoyée contient les données complètes pour les colonnes id, first_name, last_name, address.country, address.state et address.city.

Étape 5 : Observer la synchronisation automatique du schéma

  1. Dans la console ApsaraMQ for Kafka, envoyez manuellement un message contenant une nouvelle colonne.

    1. Connectez-vous à la console ApsaraMQ for Kafka.

    2. Sur la page Deploy, cliquez sur le nom de l'instance cible.

    3. Sur la page O&M, cliquez sur le nom du topic cible (users).

    4. Cliquez sur Deployments.

    5. Configurez le message.

      Dans la boîte de dialogue Commencer à envoyer et consommer un message, configurez les paramètres comme suit.

      Paramètre

      Exemple

      Start

      Sélectionnez Actions.

      Instances

      Saisissez flinktest.

      Connect to Instance

      Copiez et collez le contenu JSON suivant dans le champ Contenu du message.

      {
        "id": 100001,
        "first_name": "Dennise",
        "last_name": "Schuppe",
        "address": {
          "country": "Isle of Man",
          "state": "Montana",
          "city": "East Coleburgh"
        },
        "house-points": {
          "house": "Pukwudgie",
          "points": 76
        }
      }
      Remarque

      Dans cet exemple, house-points est une nouvelle colonne imbriquée.

      Metadata Management

      Sélectionnez Query table.

      Run

      Saisissez 0.

    6. Cliquez sur Instances.

  2. Dans la console Hologres, affichez les modifications de schéma et de données dans la table users.

    1. Connectez-vous à la console Hologres.

    2. Sur la page Topics, cliquez sur le nom de l'instance cible.

    3. Dans le coin supérieur droit de la page, cliquez sur Send Message.

    4. Sur l'onglet Method of Sending, double-cliquez sur le nom de la table users.

    5. Cliquez sur Console, saisissez l'instruction suivante, puis cliquez sur Message Key.

      SELECT * FROM test_schema.users;
    6. Affichez les résultats de la requête.

      La requête renvoie le résultat suivant.

      Le résultat montre que l'enregistrement dont l'ID est 100001 a bien été écrit dans Hologres, et que deux nouvelles colonnes, house-points.house et house-points.points, ont été ajoutées à la table Hologres.

      Remarque

      Le message envoyé à ApsaraMQ for Kafka ne contient qu'une seule colonne imbriquée : house-points. Toutefois, étant donné que json.infer-schema.flatten-nested-columns.enable est spécifié dans la clause WITH, Realtime Compute for Apache Flink aplatit automatiquement cette colonne, en utilisant les chemins d'accès aux champs imbriqués comme noms de nouvelles colonnes.

Références