Une fois un catalog Hologres configuré, vous pouvez lire directement les métadonnées Hologres depuis la console Realtime Compute for Apache Flink sans enregistrer manuellement les tables. Cette fonctionnalité améliore l'efficacité du développement des jobs et garantit l'exactitude des données. Cette rubrique explique comment configurer, consulter, utiliser et supprimer un catalog Hologres.
Prérequis
Vous devez disposer d'une instance Hologres dédiée contenant une base de données. Pour plus d'informations, consultez la section Créer une base de données.
Limitations
Les catalogs ne peuvent pas être modifiés. Pour appliquer des modifications, supprimez le catalog existant et créez-en un nouveau.
Vous devez utiliser une instance Hologres dédiée. Realtime Compute for Apache Flink ne prend pas en charge les instances de cluster partagé, car il ne peut accéder qu'aux tables internes Hologres.
Créer un catalog Hologres
La configuration d'un catalog ne peut pas être modifiée après sa création. Pour effectuer des changements, supprimez le catalog existant et créez-en un nouveau.
Interface utilisateur
Si vous devez définir des paramètres pris en charge par le connecteur Hologres, créez le catalog Hologres à l'aide de SQL.
-
Accédez à la page Data Management.
Connectez-vous à la console Realtime Compute for Apache Flink, puis cliquez sur Console dans la colonne Actions de l'espace de travail cible.
Cliquez sur Catalogs.
Cliquez sur Create Catalog, sélectionnez Hologres, puis cliquez sur Next.
-
Configurez les paramètres.
Paramètre
Description
Obligatoire
Remarques
catalogname
Nom du catalog Hologres.
Oui
Seules les lettres minuscules (a-z) et les chiffres (0-9) sont pris en charge. Les lettres majuscules, les traits d'union (-), les tirets bas (_) et autres caractères spéciaux ne sont pas autorisés.
endpoint
Endpoint réseau de l'instance Hologres.
Oui
Si l'instance Hologres et l'espace de travail Flink se trouvent dans le même VPC, accédez à la . Sur la page de détails de l'instance cible, récupérez les informations réseau pour le Specified VPC dans la section Network Information.
Pour les autres types de réseau, consultez la section Obtenir l'endpoint d'une instance Hologres.
username
-
Nom d'utilisateur d'un compte personnalisé, au format
BASIC$<user_name>. -
ID AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM.
Oui
-
L'utilisateur configuré doit disposer des autorisations nécessaires pour accéder à la base de données Hologres correspondante. Pour plus d'informations, consultez les sections Modèle d'autorisation Hologres et gestion des utilisateurs.
-
Pour savoir comment obtenir un ID AccessKey et un AccessKey Secret, consultez la section Obtenir une paire de clés AccessKey.
Important-
Afin d'éviter toute fuite de votre clé AK ou de votre mot de passe, nous vous recommandons d'utiliser des variables de projet pour saisir leurs valeurs. Pour plus d'informations, consultez la section Variables de projet.
-
Un catalog créé avec un compte personnalisé n'affiche que les bases de données auxquelles le compte a accès. Un catalog créé avec une clé AccessKey affiche toutes les bases de données de l'instance.
-
password
-
Mot de passe du compte personnalisé.
-
AccessKey Secret du compte Alibaba Cloud ou de l'utilisateur RAM.
Oui
dbname
Nom de la base de données Hologres.
Oui
La base de données doit déjà exister dans l'instance Hologres cible. Sinon, la création du catalog échoue.
-
-
Cliquez sur OK.
Une fois la création terminée, vous pouvez consulter le nouveau catalog sous Catalogs.
SQL
-
Dans l'éditeur de la page Data Query, saisissez l'instruction permettant de créer un catalog Hologres.
Syntaxe :
CREATE CATALOG <catalogname> WITH ( 'type' = 'hologres', 'endpoint' = '<endpoint>', 'username' = '<AccessKey ID>', 'password' = '<AccessKey Secret>', 'dbname' = '<dbname>' );Exemples :
Exemple simple
Exemple de consommation en temps réel
CREATE CATALOG holocatalog WITH ( 'type' = 'hologres', 'endpoint' = 'hgpostcn-cn-******-cn-hangzhou-vpc-st.hologres.aliyuncs.com:80', 'username' = 'LTAI********************', 'password' = '${secret_values.ak_holo}', 'dbname' = 'holo_test' );Le binlog doit être activé pour prendre en charge la consommation des données binlog.
CREATE CATALOG holocatalog WITH ( 'type' = 'hologres', 'endpoint' = 'hgpostcn-cn-******-cn-hangzhou-vpc-st.hologres.aliyuncs.com:80', 'username' = 'LTAI********************', 'password' = '${secret_values.ak_holo}', 'dbname' = 'holo_test', 'binlog' = 'true', -- Lorsque vous créez le catalog, vous pouvez définir des paramètres WITH pour les tables source, dimension et sink. Ces paramètres sont ensuite appliqués par défaut aux tables accessibles via ce catalog. 'cdcmode' = 'true', 'connectionpoolname' = 'the_conn_pool', 'table_property.binlog.level' = 'replica', -- Vous pouvez également transmettre des propriétés de table Hologres persistantes lors de la création du catalog. Ainsi, le binlog est activé par défaut pour les nouvelles tables. 'table_property.binlog.ttl' = '259200' );Le tableau suivant décrit les paramètres.
Paramètre
Description
Obligatoire
Remarques
catalogname
Nom du catalog Hologres.
Oui
Seules les lettres minuscules (a-z) et les chiffres (0-9) sont pris en charge. Les lettres majuscules, les traits d'union (-), les tirets bas (_) et autres caractères spéciaux ne sont pas autorisés.
type
Type du catalog.
Oui
La valeur doit être
hologres.endpoint
Endpoint de l'instance Hologres.
Oui
Si l'instance Hologres et l'espace de travail Flink se trouvent dans le même VPC, accédez à la et récupérez les informations réseau du specified VPC dans la section Network Information sur la page de détails de l'instance cible.
Pour les autres types de réseau, consultez la section Obtenir l'endpoint d'une instance Hologres.
username
ID AccessKey de votre compte Alibaba Cloud ou utilisateur RAM.
Oui
Pour plus d'informations, consultez la section Obtenir une paire de clés AccessKey.
Remarque-
Afin d'éviter toute fuite des informations de votre clé AK, nous vous recommandons d'utiliser une variable pour spécifier la valeur du mot de passe. Pour plus d'informations, consultez la section Variables de projet.
-
L'utilisateur correspondant à la clé AccessKey spécifiée doit disposer des autorisations nécessaires pour accéder à la base de données Hologres. Pour plus d'informations sur les autorisations de base de données, consultez la section Modèle d'autorisation Hologres.
password
AccessKey Secret de votre compte Alibaba Cloud ou utilisateur RAM.
Oui
dbname
Nom de la base de données Hologres.
Oui
La base de données doit déjà exister dans l'instance Hologres cible. Sinon, la création du catalog échoue.
ignore-non-persisted-options
Spécifie le comportement lors de la création d'une table avec des options non persistantes via le catalog.
Non
Valeurs valides :
-
true(par défaut) : La table est créée et toutes les options non persistantes sont ignorées. -
false: Une erreur est signalée et la création de la table échoue.
RemarqueUne option de table persistante est une option dont la valeur, telle que définie dans l'instruction DDL, est stockée dans le catalog Hologres et peut être récupérée ultérieurement. Actuellement, seules les options
endpoint,username,passwordetdbnamesont persistantes.catalog.table.metadata-columns
Lorsque vous utilisez ce catalog pour spécifier une table source, vous pouvez ajouter des colonnes de métadonnées de la table source binlog Hologres au schéma de la table selon vos besoins. Séparez plusieurs colonnes de métadonnées par un point-virgule (;). Exemple :
hg_binlog_event_type;hg_binlog_timestamp_us.Non
Par défaut, aucune colonne de métadonnées n'est ajoutée. Si vous configurez ce paramètre, les colonnes de métadonnées spécifiées sont ajoutées au schéma de la table renvoyée. Ces colonnes s'appliquent uniquement aux tables sources binlog Hologres. Par conséquent, les tables issues de ce catalog ne peuvent être utilisées que comme tables sources, et non comme tables sinks ou tables de dimension. Six types de colonnes de métadonnées sont pris en charge. Pour plus d'informations, consultez la section Champs binlog Hologres.
RemarqueCe paramètre est pris en charge uniquement dans Ververica Runtime (VVR) 8.0.11 et versions ultérieures.
Autres paramètres pris en charge par le connecteur Hologres
Vous pouvez spécifier d'autres paramètres, y compris les options WITH, lors de la création du catalog. Ces paramètres deviennent alors les paramètres par défaut pour toutes les tables accessibles via ce catalog.
Non
Pour utiliser cette fonctionnalité, définissez le paramètre
ignore-non-persisted-optionssurtrue. -
Après avoir saisi l'instruction de création du catalog, cliquez sur Run dans le coin supérieur droit.
Catalog Hologres
Une fois un catalog Hologres configuré, suivez ces étapes pour consulter ses métadonnées.
-
Accédez à la page Catalogs.
Connectez-vous à la console Realtime Compute for Apache Flink.
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.
Dans le volet de navigation de gauche, cliquez sur Catalogs.
-
Sur la page Catalog List, recherchez votre catalog par son Name et son Type.
Cliquez sur View pour afficher les bases de données et les tables du catalog. Si le schéma est public, le nom de la table apparaît sans préfixe de schéma.
Utiliser un catalog Hologres
Remarques :
Si le schéma est public, lorsque vous saisissez ${schema_name.table_name}, vous pouvez omettre le préfixe du nom de schéma et saisir directement le nom de la table sous la forme ${table_name}.
Les tables d'un catalog Hologres peuvent consommer des données
UPDATE. Pour ces tables, la propriétéignoredeleteest définie par défaut surfalseet la propriétémutatetypesurinsertorupdate. Pour plus d'informations sur ces propriétés, consultez la section Fusionner des données dans une table large et mettre à jour des données partiellement.
Créer une table Hologres
Cet exemple crée une table nommée holotable dans la base de données holodb du catalog holocatalog.
Lorsque vous créez une table dans un service de données Hologres enregistré, le paramètre
connectorest obligatoire dans la clauseWITHet sa valeur doit êtrehologres. Vous pouvez omettre les autres paramètres, tels queendpoint.Vous ne pouvez pas ajouter ni modifier directement les paramètres
WITHpris en charge dans une table Hologres. Pour ajouter ou modifier ces paramètres, utilisez les indications SQL dans une instructionINSERT.
Interface utilisateur
-
Accédez à la page Catalogs.
Connectez-vous à la console Realtime Compute for Apache Flink.
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.
Cliquez sur Catalogs.
-
Accédez à la base de données cible.
Dans la colonne Actions du catalog cible, cliquez sur View.
Dans la colonne Actions de la base de données cible, cliquez sur View.
-
Créez la table Hologres.
Cliquez sur Create Table.
Sous l'onglet Built-in, sélectionnez le connecteur Hologres et cliquez sur Next.
-
Saisissez l'instruction
CREATE TABLEet configurez les paramètres. Le code suivant constitue un exemple.Syntaxe
Exemple
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` ( ... ) WITH ( 'connector' = 'hologres' );CREATE TABLE `holocatalog`.`holo_test`.`product` ( id INT, name STRING ) WITH ( 'connector' = 'hologres' ); Cliquez sur OK.
SQL
-
Dans l'éditeur de la page Data Query, saisissez l'instruction
CREATE TABLE.Vous pouvez créer une table Hologres de l'une des manières suivantes :
USE CATALOGUtilisez une instruction USE pour référencer le catalog Hologres.
Syntaxe
Exemple
USE CATALOG ${catalog_name}; CREATE TABLE `${db_name}`.`${schema_name.table_name}`( ... ) WITH ( 'connector' = 'hologres' );USE CATALOG holocatalog; CREATE TABLE `holodb`.`holotable` ( id INT, name STRING ) WITH ( 'connector' = 'hologres' );DDL
Référencez le catalog Hologres dans l'instruction DDL.
Syntaxe
Exemple
CREATE TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}`( ... ) WITH ( 'connector' = 'hologres' );CREATE TABLE `holocatalog`.`holodb`.`holotable` ( id INT, name STRING ) WITH ( 'connector' = 'hologres' );Vous pouvez également définir des propriétés de table physiques dans l'instruction DDL.
CREATE TABLE `holocatalog`.`holodb`.`holotable` ( id INT, name STRING ) WITH ( 'connector' = 'hologres', 'table_property.orientation' = 'column', 'table_property.distribution_key' = 'a', 'table_property.clustering_key' = 'b:desc', 'table_property.bitmap_columns' = 'a,b', 'table_property.segment_key' = 'c', 'table_property.time_to_live_in_seconds' = '86400', 'table_property.binlog.level' = 'replica', 'table_property.binlog.ttl' = '86400' ); Après avoir saisi l'instruction, cliquez sur Run dans le coin supérieur droit pour créer la table.
Lorsque vous créez une table Hologres, vous pouvez spécifier des propriétés de table dans la clause WITH. Certaines propriétés ne peuvent pas être modifiées ultérieurement. Définir correctement ces propriétés améliore l'organisation des données et les performances des requêtes.
-
Propriétés de table physiques : les propriétés prises en charge sont identiques à celles de Hologres, à l'exception du fait que vous devez ajouter le préfixe
table_property.. Pour plus d'informations sur les paramètres, consultez les sections Vue d'ensemble de la création de table et S'abonner aux binlogs Hologres.Paramètre
Description
Exemple
Modifiable
table_property.orientation
Spécifie le format de stockage de la table.
'table_property.orientation' = 'row,column'
Non
table_property.table_group
Spécifie le groupe de tables.
'table_property.table_group' = 'table_group_xxx'
table_property.distribution_key
Spécifie la clé de distribution.
'table_property.distribution_key' = 'a,b'
table_property.clustering_key
Spécifie la clé de clustering.
'table_property.clustering_key' = 'a,b:desc'
table_property.event_time_column (anciennement table_property.segment_key)
Spécifie la clé de segment.
'table_property.event_time_column' = 'c,d' (ou 'table_property.segment_key' = 'c,d')
table_property.bitmap_columns
Spécifie l'index bitmap.
'table_property.bitmap_columns' = 'a:on,b:off'
Oui
table_property.dictionary_encoding_columns
Spécifie l'encodage du dictionnaire.
'table_property.dictionary_encoding_columns' = 'a:on,b:off,c:auto'
table_property.time_to_live_in_seconds
Spécifie la durée de vie (TTL) des données de la table.
'table_property.time_to_live_in_seconds' = '864000'
table_property.binlog.level
Indique si le binlog est activé.
'table_property.binlog.level' = 'replica'
table_property.binlog.ttl
Spécifie la TTL du binlog.
'table_property.binlog.ttl' = '86400'
-
Paramètre de mode flexible : pour activer le mode flexible lors de la création d'une table avec un catalog Hologres, définissez le paramètre enableTypeNormalization.
Élément
Description
Cas d'utilisation
Dans les scénarios CTAS, vous devrez peut-être ajuster la précision du type de données d'un champ existant (par exemple, de VARCHAR(10) à VARCHAR(20)) ou changer le type de données (par exemple, de SMALLINT à INT).
Remarques
-
Vous devez activer le mode flexible lors de la première exécution du job CTAS. Si vous n'activez pas le mode flexible lors de la première exécution, vous devrez supprimer la table en aval et redémarrer le job sans état pour que la modification prenne effet.
-
Une fois le mode flexible activé, si un type de données en amont change, le job CTAS continue de s'exécuter tant que les nouveaux types et les types d'origine partagent le même type normalisé. Dans le cas contraire, les types sont considérés comme incompatibles et le job CTAS génère une exception.
Valeurs
-
false(par défaut) : Crée une table physique Hologres basée sur le mappage de type standard. -
true: Le mode flexible est activé. Lors de la création d'une table physique Hologres, un type de données avec une précision plus élevée est utilisé après normalisation du type. Les règles de normalisation de type actuelles sont les suivantes :-
TINYINT, SMALLINT, INT et BIGINT sont normalisés en BIGINT.
-
CHAR, VARCHAR et STRING sont normalisés en STRING.
-
FLOAT et DOUBLE sont normalisés en DOUBLE.
-
Les autres types de données sont créés selon les règles de mappage de type d'origine. Pour plus d'informations, consultez la section Mappage des types.
-
-
Modifier une table Hologres
Un catalog Hologres prend en charge les opérations de modification de table suivantes :
|
Actions |
Syntaxe et exemple |
|
Modifier les propriétés de la table |
Seules certaines propriétés de table peuvent être modifiées. Pour plus d'informations, consultez la section Créer une table Hologres.
|
|
Renommer une table |
|
|
Ajouter une colonne |
|
|
Renommer une colonne |
|
|
Modifier le commentaire d'une colonne |
|
Lire et écrire dans des tables Hologres
-
Lisez les données d'une table Hologres et écrivez-les dans une table sink.
Par défaut, Flink lit les tables sources Hologres en mode batch et ne traite pas les nouvelles données en temps réel. Pour diffuser des données depuis Hologres en temps réel, utilisez l'une des méthodes suivantes :
-
Configurez le catalog Hologres lors de la création : lorsque vous créez le catalog à l'aide de SQL, vous pouvez activer le binlog pour consommer les données binlog. Pour plus d'informations, consultez la section Exemple de consommation en temps réel. Ensuite, lisez les données Hologres. Le code suivant fournit un exemple.
Syntaxe
Exemple
INSERT INTO ${other_sink_table} SELECT ... FROM `${catalog_name}`.`${db_name}`.`${schema_name.table_name}`;INSERT INTO sink_table SELECT id, name FROM `holocatalog`.`holodb`.`holotable`; -
Passez en mode flux à l'aide d'une indication de table. Ajoutez l'indication
/*+ OPTIONS('binlog'='true') */à l'instruction SQL. Le code suivant fournit un exemple.INSERT INTO sinktable SELECT id, name FROM `holocatalog`.`holodb`.`holotable` /*+ OPTIONS ('binlog' = 'true') */;
-
-
Écrivez les données d'une table source dans une table Hologres.
Syntaxe
Exemple
INSERT INTO `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` SELECT ... FROM ${other_source_table}INSERT INTO `holocatalog`.`holodb`.`holotable` SELECT id, name FROM source_table;
Destination CTAS
-
Syntaxe
CREATE TABLE IF NOT EXISTS `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` WITH ( 'connector' = 'hologres' ) AS TABLE ${other_source_table}; -
Exemple
CREATE TABLE IF NOT EXISTS `holocatalog`.`holodb`.`holotable` WITH ( 'connector' = 'hologres' ) AS TABLE source_table;
CTAS vous permet de définir des propriétés de table physiques dans la clause WITH. Ces propriétés sont définies lors de la création de la table de destination. Pour plus d'informations sur les propriétés de table prises en charge, consultez la section Créer une table Hologres.
Lors de la synchronisation des données depuis une source, le catalog Hologres peut réécrire le schéma de la table de destination afin de garantir que les données puissent être écrites dans Hologres. Cela se produit dans les cas suivants :
-
Le schéma source utilise une colonne de type DECIMAL comme clé primaire.
Étant donné que Hologres ne prend pas en charge DECIMAL comme clé primaire, il réécrit par défaut le type de colonne en BIGINT. Si cette modification ne répond pas à vos besoins, vous pouvez utiliser une instruction CTAS pour convertir la colonne en type STRING et recréer la clé primaire.
-
Le schéma source contient une colonne de type TIME, TIMESTAMP ou TIMESTAMP_LTZ avec une précision supérieure à 6.
Hologres prend en charge une précision maximale de 6 pour les types temporels. Afin de garantir que les données puissent être écrites dans Hologres, Flink ignore implicitement les chiffres dépassant la précision maximale prise en charge par Hologres.
Destination CDAS
-
Syntaxe
CREATE DATABASE IF NOT EXISTS `${catalog_name}`.`${db_name}` WITH ( 'sink.parallelism' = '5' -- Set the parallelism for each sink table. ) AS DATABASE ${other_source_database}; -
Exemple
CREATE DATABASE IF NOT EXISTS `holocatalog`.`holodb` WITH ( 'sink.parallelism' = '5' -- Set the parallelism for each sink table. ) AS DATABASE source_database;
Paramètres de la clause WITH :
Vous pouvez déclarer des paramètres pour les tables sinks. Au démarrage du job, ces paramètres sont appliqués aux tables en aval qui doivent être synchronisées. Pour plus d'informations sur les paramètres pris en charge, consultez la section Table sink Hologres.
-
Vous pouvez spécifier un schemaname pour synchroniser les données vers un schéma spécifique dans la base de données Hologres de destination. Le tableau suivant décrit ce paramètre.
Paramètre
Description
Obligatoire
Valeur par défaut
schemaname
Nom du schéma.
Non
public
-
Vous ne pouvez pas définir de propriétés de table physiques, car la clause
WITHs'applique à toutes les tables de destination et chaque table peut nécessiter des propriétés différentes.Si vous devez définir des propriétés de table, vous devez créer manuellement les tables de destination avant de démarrer le job CDAS. Pour plus d'informations sur les propriétés de table physiques, consultez la section Créer une table Hologres.
Supprimer un catalog Hologres
La suppression d'un catalog Hologres n'affecte pas les jobs en cours d'exécution, mais elle impacte les jobs non publiés ou ceux nécessitant une pause et une reprise. Procédez avec prudence.
Interface utilisateur
-
Accédez à la page Catalogs.
Connectez-vous à la console Realtime Compute for Apache Flink.
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.
Dans le volet de navigation de gauche, cliquez sur Catalogs.
Sur la page Catalog List, recherchez le catalog cible et cliquez sur Delete dans la colonne Actions.
Dans la boîte de dialogue de confirmation, cliquez sur Delete.
Confirmez que le catalog cible n'apparaît plus dans la section Catalogs à gauche.
Flink SQL
-
Dans l'éditeur de texte de la page Data Query, saisissez la commande suivante.
DROP CATALOG ${catalog_name}Où
${catalog_name}correspond au nom du catalog Hologres à supprimer, tel qu'affiché dans la console Realtime Compute for Apache Flink. Sélectionnez la commande, faites un clic droit, puis choisissez Run.
Confirmez que le catalog cible n'apparaît plus dans la section Catalogs à gauche.
FAQ
Consommation en temps réel des données Hologres : Que faire lorsqu'un job lisant depuis une table source Hologres à l'aide d'un catalog Hologres se termine automatiquement au lieu de s'exécuter en continu ?
Problèmes de connectivité réseau : Comment trouver l'endpoint d'une instance Hologres ?
Limitations de stockage source et sink : Pourquoi l'erreur « CREATE TABLE ... AS TABLE ... statement requires target catalog ... implements org.apache.flink.table.catalog.CatalogTableProvider interface. » s'affiche-t-elle ?
Documents connexes
Paramètres WITH Hologres : Paramètres WITH
-
Cas d'utilisation du catalog Hologres :