Vertica est une base de données orientée colonnes reposant sur une architecture de traitement massivement parallèle (MPP). Le connecteur de données Vertica permet la lecture et l'écriture bidirectionnelles. Cette rubrique décrit les fonctionnalités de synchronisation des données offertes par ce connecteur dans DataWorks.
Versions prises en charge
Vertica Reader se connecte à Vertica via le pilote JDBC. Veillez à utiliser une version du pilote compatible avec votre service Vertica. DataWorks utilise la version 7.1.2 du pilote JDBC :
<dependency>
<groupId>com.vertica</groupId>
<artifactId>vertica-jdbc</artifactId>
<version>7.1.2</version>
</dependency>
Limites
Les connecteurs de données Vertica sont compatibles uniquement avec les groupes de ressources Serverless (recommandé) et les groupes de ressources exclusifs pour Data Integration.
Vertica Writer ne prend pas en charge le paramètre
writeMode.Configurez les tâches exclusivement dans l'éditeur de code.
Types de champs pris en charge
Les types de données Vertica courants (entier, flottant, chaîne et date/heure) sont pris en charge. La prise en charge des types de données avancés reste limitée.
Ajout d'un connecteur de données
Avant de créer une tâche de synchronisation, ajoutez le connecteur de données Vertica à DataWorks. Pour plus d'informations, consultez Gestion des sources de données.
La console DataWorks affiche également la description des paramètres lors de l'ajout du connecteur.
Création d'une tâche de synchronisation des données
Vous devez configurer les tâches de synchronisation des données Vertica dans l'éditeur de code. Les sections suivantes détaillent le format du script, les paramètres et fournissent des exemples.
Configuration d'une tâche de synchronisation hors ligne pour une seule table
Pour la procédure de configuration, consultez Configuration d'une tâche dans l'éditeur de code.
Pour la liste complète des paramètres et des exemples de scripts, reportez-vous à la section Annexe : Exemples de scripts et descriptions des paramètres.
Annexe : Exemples de scripts et descriptions des paramètres
Configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code
Le script doit respecter le format unifié des tâches de synchronisation par lots. Pour connaître les exigences de format, consultez Configuration d'une tâche dans l'éditeur de code.
Exemple de script Reader
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "vertica",
"parameter": {
"datasource": "", // The data source name.
"column": [ // The columns to read.
"id",
"name"
],
"where": "",
"splitPk": "id",
"connection": [
{
"table": [ // The source table name.
"table"
]
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": false,
"fieldDelimiter": ","
},
"name": "Writer",
"category": "writer"
}
],
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" // Maximum number of error records allowed.
},
"speed": {
"throttle": true, // Set to true to enable rate limiting; set to false to disable.
"concurrent": 1, // Number of concurrent jobs.
"mbps": "12" // Maximum transmission rate. 1 mbps = 1 MB/s.
}
}
}
Paramètres du script Reader
| Paramètre | Description | Obligatoire | Valeur par défaut | Exemple |
|---|---|---|---|---|
datasource |
Nom du connecteur de données. Il doit correspondre exactement au nom du connecteur ajouté dans l'éditeur de code. | Oui | Aucune | my_vertica_source |
table |
Tables source à lire, spécifiées sous forme de tableau JSON. Vous pouvez lire plusieurs tables simultanément, à condition qu'elles partagent le même schéma. Vertica Reader ne vérifie pas la cohérence des schémas. Placez le paramètre table dans le bloc connection. |
Oui | Aucune | ["orders", "order_items"] |
column |
Colonnes à lire depuis les tables source, spécifiées sous forme de tableau JSON. Utilisez ["*"] pour lire toutes les colonnes. Ce paramètre prend en charge l'élagage, le réordonnancement des colonnes et l'ajout de constantes. Ne laissez pas ce champ vide. |
Oui | Aucune | ["id", "name", "created_at"] |
splitPk |
Colonne utilisée pour partitionner les données lors des lectures concurrentes. Privilégiez la clé primaire pour assurer une distribution uniforme et éviter les points chauds. Seules les colonnes de type entier sont prises en charge (les types chaîne, flottant et date ne sont pas acceptés). Si vous laissez ce champ vide, la lecture s'effectue via un seul canal, sans partitionnement. | Non | Aucune | "id" |
where |
Condition de filtrage. Vertica Reader construit la requête SQL à partir des paramètres column, table et where. Pour une synchronisation incrémentielle des données quotidiennes, définissez ce paramètre sur gmt_create > $bizdate. En l'absence de configuration, le système lit toutes les données de la table. |
Non | Aucune | "gmt_create > $bizdate" |
querySql |
Requête SQL personnalisée pour les scénarios de filtrage avancés où le paramètre where s'avère insuffisant. Si vous configurez querySql, Vertica Reader ignore les paramètres table, column et where. |
Non | Aucune | "SELECT id, name FROM orders WHERE status = 'active'" |
fetchSize |
Nombre d'enregistrements extraits de la base de données par lot. Augmenter cette valeur réduit les allers-retours réseau et améliore les performances d'extraction. Toutefois, définir fetchSize au-delà de 2048 risque de provoquer une erreur de mémoire insuffisante (OOM). |
Non | 1024 | 512 |
Exemple de script Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "vertica",
"parameter": {
"datasource": "data_source_name",
"column": [ // The destination columns.
"id",
"name"
],
"connection": [
{
"table": [ // The destination table name.
"vertica_table"
]
}
],
"preSql": [ // SQL to run before the write task starts.
"delete from @table where db_id = -1"
],
"postSql": [ // SQL to run after the write task completes.
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0" // Maximum number of error records allowed.
},
"speed": {
"throttle": true, // Set to true to enable rate limiting; set to false to disable.
"concurrent": 1, // Number of concurrent jobs.
"mbps": "12" // Maximum transmission rate. 1 mbps = 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Paramètres du script Writer
| Paramètre | Description | Obligatoire | Valeur par défaut | Exemple |
|---|---|---|---|---|
datasource |
Nom du connecteur de données. Il doit correspondre exactement au nom du connecteur ajouté dans l'éditeur de code. | Oui | Aucune | my_vertica_dest |
jdbcUrl |
URL JDBC de la base de données Vertica de destination, spécifiée dans le bloc connection. Une seule valeur est acceptée. L'utilisation de plusieurs bases de données principales pour une même instance (comme dans les scénarios d'importation bidirectionnelle) n'est pas prise en charge. |
Oui | Aucune | jdbc:vertica://127.0.0.1:3306/database |
username |
Nom d'utilisateur pour l'authentification auprès du connecteur de données. | Oui | Aucune | dbadmin |
password |
Mot de passe associé au nom d'utilisateur spécifié. | Oui | Aucune | ******** |
table |
Tables de destination vers lesquelles écrire les données, spécifiées sous forme de tableau JSON dans le bloc connection. |
Oui | Aucune | ["vertica_table"] |
column |
Colonnes de destination vers lesquelles écrire les données, séparées par des virgules. | Oui | Aucune | ["id", "name", "age"] |
preSql |
Instruction SQL à exécuter avant l'écriture des données dans la table de destination. Utilisez @table comme espace réservé pour le nom de la table ; le système le remplacera par le nom réel lors de l'exécution. |
Non | Aucune | "delete from @table where db_id = -1" |
postSql |
Instruction SQL à exécuter après l'écriture des données dans la table de destination. | Non | Aucune | "update @table set db_modify_time = now() where db_id = 1" |
batchSize |
Nombre d'enregistrements validés par lot. Des valeurs plus élevées réduisent les allers-retours réseau et améliorent le débit, mais une valeur trop importante peut provoquer une erreur OOM. | Non | 1024 | 512 |