Tous les produits
Search
Centre de documentation

Hologres:Table de destination Hologres

Dernière mise à jour :Sep 12, 2026

Hologres s'intègre parfaitement à Realtime Compute for Apache Flink exécuté en mode Blink exclusif. Utilisez un connecteur pour écrire des flux de données dans une table de destination Hologres et interroger les données immédiatement. Cette rubrique explique comment écrire des données dans une table de destination Hologres à partir d'une tâche exécutée en mode Blink exclusif.

Limites

  • Les différentes versions de Blink en mode exclusif utilisent des syntaxes de développement distinctes. Avant de commencer, identifiez votre version de Blink en mode exclusif et utilisez les exemples correspondants.

  • Assurez-vous que votre déploiement Realtime Compute for Apache Flink et votre instance Hologres se trouvent dans la même région afin d'éviter les échecs de connexion.

  • Les versions de Blink en mode exclusif antérieures à la 3,6 ne disposent pas de connecteur Hologres intégré. Pour écrire des données dans Hologres en temps réel, vous devez référencer un fichier JAR. Pour obtenir de l'aide, consultez la section Erreurs courantes lors de la préparation de la mise à niveau ou contactez-nous en rejoignant le groupe DingTalk Hologres. Pour plus d'informations, voir Comment obtenir davantage d'assistance en ligne ?.

    Remarque

    Nous vous recommandons de mettre à niveau Blink en mode exclusif vers la version 3.6 ou ultérieure pour exécuter vos tâches.

  • Blink en mode exclusif 3,7 prend en charge la création automatique de tables partitionnées Hologres, mais vous devez configurer createparttable='true' dans la tâche. Voici les points à prendre en compte lors de l'utilisation de tables partitionnées :

    • Hologres ne prend actuellement en charge que le partitionnement par liste.

    • Lors de la création d'une table partitionnée, spécifiez explicitement la colonne de clé de partition. Actuellement, les colonnes de clé de partition ne prennent en charge que les types de données text et int4, et leurs valeurs ne doivent pas contenir de trait d'union (-), par exemple 2020-09-12.

    • Si une clé primaire est définie pour la table partitionnée, la colonne de clé de partition doit faire partie de la clé primaire.

    • Lorsque vous créez une table de partition enfant, la valeur de sa colonne de clé de partition doit être une valeur fixe.

    • La valeur de la colonne de clé de partition pour les données écrites dans une table de partition enfant doit correspondre exactement à la valeur définie lors de la création de la table enfant. Sinon, une erreur se produit.

    • La fonctionnalité de partition DEFAULT n'est pas prise en charge pour le moment.

  • Si la table Hologres de destination possède une clé primaire, la sémantique d'écriture en temps réel par défaut ne met pas à jour les enregistrements en fonction de cette clé. Si vous importez ultérieurement des données avec une clé primaire en double, les nouvelles données sont ignorées.

  • Hologres écrit les données de manière asynchrone. Ajoutez la configuration blink.checkpoint.fail_on_checkpoint_error=true à votre tâche pour garantir qu'un basculement est déclenché si la tâche rencontre une exception. Ce paramètre n'est pas requis pour Blink 3.7.6 ou versions ultérieures.

Syntaxe DDL

L'instruction DDL suivante permet de créer une table de destination Hologres.

create table Hologres_sink(
  name varchar,
  age BIGINT,
  birthday BIGINT
) with (
  type='hologres',
  dbname='<yourDbname>', -- The name of the Hologres database.
  tablename='<yourTablename>', -- The name of the Hologres table that receives the data.
  username='<yourUsername>', -- The AccessKey ID of your Alibaba Cloud account.
  password='<yourPassword>', -- The AccessKey secret of your Alibaba Cloud account.
  endpoint='<yourEndpoint>'); -- The VPC endpoint of your Hologres instance.

Paramètres WITH

Paramètre

Description

Exemple

type

Le type de la table de destination. Définissez cette valeur sur hologres.

hologres

endpoint

Le point de terminaison VPC de l'instance Hologres.

Connectez-vous à la console Hologres et recherchez le point de terminaison dans la section Network Information de la page des détails de l'instance. Le point de terminaison doit inclure un numéro de port et respecter le format ip:port.

demo-cn-hangzhou-vpc.hologres.aliyuncs.com:80

username

ID AccessKey

Vous pouvez obtenir votre ID AccessKey sur la page AccessKey Management.

xxxxm3FMWaxxxx

password

Clé secrète AccessKey

Vous pouvez obtenir votre clé secrète AccessKey sur la page AccessKey Management.

xxxxm355fffaxxxx

dbname

Le nom de la base de données Hologres.

Holodb

tablename

Le nom de la table dans la base de données Hologres.

blink_test

arraydelimiter

La table de destination Hologres utilise ce délimiteur pour diviser un champ STRING en un tableau avant d'importer le tableau dans Hologres.

La valeur par défaut est \u0002.

\u0002

mutatetype

Le mode d'écriture des données. Pour plus d'informations, voir Table de destination Hologres.

La valeur par défaut est insertorignore.

insertorignore

ignoredelete

Indique s'il faut ignorer les messages de rétractation.

  • true : ignore les messages de rétractation.

  • false : n'ignore pas les messages de rétractation.

Remarque

Ce paramètre ne s'applique qu'aux tâches en streaming.

La valeur par défaut est false.

Les opérations Flink GROUP BY génèrent généralement un message de rétractation. Lorsque le connecteur Hologres reçoit ce message, il devient une requête DELETE.

false

partitionrouter

Indique s'il faut écrire les données dans une table partitionnée.

  • true : écrit dans une table partitionnée.

  • false : n'écrit pas dans une table partitionnée.

La valeur par défaut est false.

false

createparttable

Si l'écriture se fait dans une table partitionnée, ce paramètre indique s'il faut créer automatiquement des tables de partition enfant en fonction des valeurs de partition. Cette fonctionnalité est prise en charge dans Blink en mode exclusif version 3.7 et ultérieures.

La valeur par défaut est false.

Important

Utilisez cette fonctionnalité avec prudence. Assurez-vous que les valeurs de partition ne contiennent pas de données incorrectes, ce qui pourrait entraîner la création de tables de partition erronées.

false

Remarque

Les paramètres arraydelimiter, mutatetype, ignoredelete, partitionrouter et createparttable ne figurent pas dans l'exemple d'instruction DDL. Si vous devez utiliser ces paramètres dans votre application, ajoutez-les comme décrit dans ce tableau.

Écrire dans une table de destination Hologres standard

  1. Créez une table dans Hologres.

    Créez une table dans Hologres pour recevoir les données. Voici un exemple d'instruction SQL :

     create table blink_test (a int, b text, c text, d float8, e bigint);
  2. Créez une tâche Realtime Compute for Apache Flink.

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

    2. Créez une tâche.

      • Blink en mode exclusif version 3.6 et ultérieures inclut une prise en charge intégrée de la source de données Hologres. Vous pouvez utiliser cette source de données directement. Voici un exemple d'instruction SQL :

        create table randomSource (a int, b VARCHAR, c VARCHAR, d DOUBLE, e BIGINT) with (type = 'random');
        create table test (
          a int,
          b VARCHAR,
          c VARCHAR,
          PRIMARY KEY (a)
        ) with (
          type = 'hologres',
          `endpoint` = '$ip:$port', -- The VPC endpoint and port number of your Hologres instance.
          `username` = 'The AccessKey ID of your Alibaba Cloud account',
          `password` = 'The AccessKey secret of your Alibaba Cloud account',
          `dbname` = 'The name of the Hologres database',
          `tablename` = 'blink_test'-- The name of the Hologres table that receives the data.
        );
        insert
          into test
        select
          a,b,c
        from
          randomSource;
  3. Publiez la tâche.

    1. Après avoir créé la tâche, cliquez sur Syntax Check. Un statut Successful indique que la syntaxe est correcte.

    2. Cliquez sur Save pour enregistrer la tâche.

    3. Cliquez sur Publish pour déployer la tâche dans l'environnement de production. Configurez les paramètres de déploiement en fonction de vos besoins métier. Cliquez sur Publish New Version pour lancer le processus de déploiement. À l'étape Initial Resources, choisissez une méthode d'allocation des ressources : Auto-tuning based on last run, System allocation ou Manual resource configuration. Après avoir effectué votre sélection, cliquez sur Next. Vous pouvez également cliquer sur Skip Data Check pour accéder directement à l'étape de configuration des ressources.

  4. Démarrez la tâche.

    Après avoir publié la tâche dans l'environnement de production, vous devez la démarrer manuellement.

    Dans la barre de navigation supérieure de la page Development Platform, cliquez sur Administration à droite. Sur la page Administration, sélectionnez la tâche souhaitée et cliquez sur Start uicontrol替换 修改时间:2026-02-03 01:28:40 原文:启动 修改后:conref="mcms_dita_hologres-console.dita#hologres-console/start" dans le coin supérieur droit.

  5. Interrogez les données dans Hologres en temps réel.

    Interrogez la table de destination dans Hologres pour afficher les données écrites en temps réel. Voici un exemple de requête :

    select * from blink_test;

Fusionner et mettre à jour des tables larges

Cette section décrit un cas d'utilisation courant : l'écriture de données provenant de plusieurs flux dans une seule table large Hologres.

Supposons que vous disposiez d'une table large Hologres nommée WIDE_TABLE avec les colonnes A, B, C, D et E, où la colonne A est la clé primaire. Dans Flink, un flux contient des données pour les colonnes A, B et C, et un autre flux contient des données pour les colonnes A, D et E.

  1. Utilisez Flink SQL pour déclarer deux tables de destination Hologres. Déclarez les colonnes A, B et C pour une table, et les colonnes A, D et E pour l'autre. Mappez les deux tables à la table WIDE_TABLE dans Hologres.

  2. Définissez le paramètre mutatetype sur insertorupdate pour les deux tables de destination.

  3. Définissez le paramètre ignoredelete sur true pour les deux tables de destination. Cela empêche les messages de rétractation de générer des requêtes DELETE.

  4. Insérez les données de chaque flux dans sa table de destination correspondante.

Ce scénario présente les limites suivantes :

  1. La table large doit posséder une clé primaire.

  2. Chaque flux doit inclure toutes les colonnes de clé primaire.

  3. La fusion de données dans une table large orientée colonne avec un taux de requêtes par seconde (RPS) élevé peut entraîner une utilisation élevée du processeur. Nous vous recommandons de désactiver l'encodage de dictionnaire pour les colonnes de la table.

Écrire dans une table de destination Hologres partitionnée

Hologres vous permet d'appeler l'API HoloHub pour écrire des données directement dans une table parente partitionnée. Les données sont ensuite automatiquement routées vers les tables de partition enfant appropriées. Pour plus d'informations, voir API HoloHub.

Les limites suivantes s'appliquent :

  • Hologres ne prend actuellement en charge que le partitionnement par liste.

  • Lors de la création d'une table partitionnée, spécifiez explicitement la colonne de clé de partition. Le type de données de la colonne de clé de partition ne peut être que text ou int4.

  • Si une clé primaire est définie, la colonne de clé de partition doit faire partie de la clé primaire.

  • Lorsque vous créez une table de partition enfant, la valeur de sa colonne de clé de partition doit être une valeur fixe.

  • La valeur de la colonne de clé de partition pour les données écrites dans une table de partition enfant doit correspondre exactement à la valeur définie lors de la création de la table enfant. Sinon, une erreur se produit.

  • Hologres ne prend pas en charge les partitions par défaut pour le moment.

  1. Créez une table partitionnée dans Hologres.

    Créez une table partitionnée dans Hologres pour recevoir les données et créez ses tables de partition enfant correspondantes. Voici un exemple d'instruction SQL :

    -- Create the parent table test_message and its child partition tables.
    drop table if exists test_message;
    begin;
    create table test_message (
     "bizdate" text NOT NULL,
     "tag" text NOT NULL,
     "id" int4 NOT NULL,
     "title" text NOT NULL,
     "body" text,
    PRIMARY KEY (bizdate,tag,id)
    )
    PARTITION BY LIST (bizdate);
    commit;
    Remarque
    • Lors de l'exécution de la commande, remplacez le paramètre ${bizdate} par la valeur réelle.

    • Seule la version 3.7 ou ultérieure de Blink en mode exclusif prend en charge la création automatique de partitions. Si vous utilisez une version antérieure, vous devez créer les tables de partition enfant dans Hologres au préalable. Sinon, l'importation des données échouera.

  2. Créez une tâche dans Blink en mode exclusif.

    Voici un exemple d'instruction pour créer une tâche dans Blink en mode exclusif.

    Remarque

    L'exemple suivant s'applique à Blink en mode exclusif 3.7 et versions ultérieures. Si vous utilisez une version de Blink en mode exclusif antérieure à la 3,7, effectuez une mise à niveau vers la version 3.7 ou ultérieure, ou supprimez la configuration createparttable.

    create table test_message_src(
      tag VARCHAR,
      id INTEGER,
      title VARCHAR,
      body VARCHAR
    ) with (
      type = 'random',
      `interval` = '10',
      `count` = '100'
    );
    create table test_message_sink (
      bizdate VARCHAR,
      tag VARCHAR,
      id INTEGER,
      title VARCHAR,
      body VARCHAR
    ) with (
      type = 'hologres',
      `endpoint` = '$ip:$port', -- The VPC endpoint of your Hologres instance.
      `username` ='<AccessID>', -- The AccessKey ID of your Alibaba Cloud account.
      `password` = '<AccessKey>', -- The AccessKey secret of your Alibaba Cloud account.
      `dbname` = '<DBname>', -- The name of the Hologres database.
      `tablename` = '<Tablename>', -- The name of the table in your Hologres database.
      `partitionrouter` = 'true', -- Write data to a partitioned table in Hologres.
      `createparttable` = 'true' -- Automatically create child partition tables in Hologres.
    );
    insert into test_message_sink select "20200327",* from test_message_src;
    insert into test_message_sink select "20200328",* from test_message_src;
  3. Publiez et démarrez la tâche.

    Pour plus d'informations, reportez-vous aux étapes Publiez la tâche et Démarrez la tâche de la section Écrire dans une table de destination Hologres standard.

  4. Interrogez les données dans Hologres en temps réel.

    Interrogez la table de destination dans Hologres pour afficher les données écrites en temps réel. Voici des exemples de requêtes :

    select * from test_message;
    select * from test_message where bizdate = '20200327';

Mappages de types de données

Consultez la section Résumé des types de données pour connaître les mappages de types de données entre Blink en mode exclusif et Hologres.