Tous les produits
Search
Centre de documentation

DataWorks:Hive

Dernière mise à jour :Aug 10, 2026

Connectez l'intégration des données de DataWorks à Apache Hive pour une synchronisation bidirectionnelle des données hors ligne. Cette rubrique explique le fonctionnement de la lecture et de l'écriture, les versions Hive prises en charge, ainsi que la configuration d'une source de données et des tâches de synchronisation.

Opérations prises en charge

Opération Synchronisation de table unique Synchronisation de base de données complète
Lecture (Hive comme source) Oui Oui
Écriture (Hive comme destination) Oui Non

Fonctionnement

Les plug-ins Hive Reader et Hive Writer utilisent Hive Metastore pour accéder aux métadonnées des tables, notamment le chemin de stockage des fichiers du système de fichiers distribués Hadoop (HDFS), le format de fichier et le séparateur.

Lecture

Deux modes de lecture sont disponibles. Choisissez celui qui correspond à vos besoins en matière de filtrage.

Mode Fonctionnement Prend en charge le filtre WHERE Performances
hdfs Lit directement les données de la table à partir des fichiers HDFS Non Supérieures — contourne le moteur de requête
jdbc Se connecte à HiveServer2 via un client JDBC Hive Oui Inférieures — peut déclencher une tâche MapReduce

Écriture

Le plug-in Hive Writer écrit les données dans des fichiers HDFS, puis exécute une instruction LOAD DATA SQL via un client JDBC Hive pour charger les données dans la table Hive cible. La logique sous-jacente est identique à celle du plug-in HDFS Writer : les paramètres de HDFS Writer peuvent être configurés dans Hive Writer et sont transmis directement.

Versions prises en charge

Versions standard : 0.8.0, 0.8.1, 0.9.0, 0.10.0, 0.11.0, 0.12.0, 0.13.0, 0.13.1, 0.14.0, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 1.2.1, 1.2.2, 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.2.0, 2.3.0, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 3.0.0, 3.1.0, 3.1.1, 3.1.2, 3.1.3

Versions CDH (versions sélectionnées) : de 0.8.1-cdh4.0.0 à 3.1.1-cdh7.1.1, y compris CDH 4.x, CDH 5.x (jusqu'à 5.16.99) et les variantes CDH 6.x/7.x.

Liste complète des versions CDH

0.8.1-cdh4.0.0
0.8.1-cdh4.0.1
0.9.0-cdh4.1.0
0.9.0-cdh4.1.1
0.9.0-cdh4.1.2
0.9.0-cdh4.1.3
0.9.0-cdh4.1.4
0.9.0-cdh4.1.5
0.10.0-cdh4.2.0
0.10.0-cdh4.2.1
0.10.0-cdh4.2.2
0.10.0-cdh4.3.0
0.10.0-cdh4.3.1
0.10.0-cdh4.3.2
0.10.0-cdh4.4.0
0.10.0-cdh4.5.0
0.10.0-cdh4.5.0.1
0.10.0-cdh4.5.0.2
0.10.0-cdh4.6.0
0.10.0-cdh4.7.0
0.10.0-cdh4.7.1
0.12.0-cdh5.0.0
0.12.0-cdh5.0.1
0.12.0-cdh5.0.2
0.12.0-cdh5.0.3
0.12.0-cdh5.0.4
0.12.0-cdh5.0.5
0.12.0-cdh5.0.6
0.12.0-cdh5.1.0
0.12.0-cdh5.1.2
0.12.0-cdh5.1.3
0.12.0-cdh5.1.4
0.12.0-cdh5.1.5
0.13.1-cdh5.2.0
0.13.1-cdh5.2.1
0.13.1-cdh5.2.2
0.13.1-cdh5.2.3
0.13.1-cdh5.2.4
0.13.1-cdh5.2.5
0.13.1-cdh5.2.6
0.13.1-cdh5.3.0
0.13.1-cdh5.3.1
0.13.1-cdh5.3.2
0.13.1-cdh5.3.3
0.13.1-cdh5.3.4
0.13.1-cdh5.3.5
0.13.1-cdh5.3.6
0.13.1-cdh5.3.8
0.13.1-cdh5.3.9
0.13.1-cdh5.3.10
1.1.0-cdh5.3.6
1.1.0-cdh5.4.0
1.1.0-cdh5.4.1
1.1.0-cdh5.4.2
1.1.0-cdh5.4.3
1.1.0-cdh5.4.4
1.1.0-cdh5.4.5
1.1.0-cdh5.4.7
1.1.0-cdh5.4.8
1.1.0-cdh5.4.9
1.1.0-cdh5.4.10
1.1.0-cdh5.4.11
1.1.0-cdh5.5.0
1.1.0-cdh5.5.1
1.1.0-cdh5.5.2
1.1.0-cdh5.5.4
1.1.0-cdh5.5.5
1.1.0-cdh5.5.6
1.1.0-cdh5.6.0
1.1.0-cdh5.6.1
1.1.0-cdh5.7.0
1.1.0-cdh5.7.1
1.1.0-cdh5.7.2
1.1.0-cdh5.7.3
1.1.0-cdh5.7.4
1.1.0-cdh5.7.5
1.1.0-cdh5.7.6
1.1.0-cdh5.8.0
1.1.0-cdh5.8.2
1.1.0-cdh5.8.3
1.1.0-cdh5.8.4
1.1.0-cdh5.8.5
1.1.0-cdh5.9.0
1.1.0-cdh5.9.1
1.1.0-cdh5.9.2
1.1.0-cdh5.9.3
1.1.0-cdh5.10.0
1.1.0-cdh5.10.1
1.1.0-cdh5.10.2
1.1.0-cdh5.11.0
1.1.0-cdh5.11.1
1.1.0-cdh5.11.2
1.1.0-cdh5.12.0
1.1.0-cdh5.12.1
1.1.0-cdh5.12.2
1.1.0-cdh5.13.0
1.1.0-cdh5.13.1
1.1.0-cdh5.13.2
1.1.0-cdh5.13.3
1.1.0-cdh5.14.0
1.1.0-cdh5.14.2
1.1.0-cdh5.14.4
1.1.0-cdh5.15.0
1.1.0-cdh5.16.0
1.1.0-cdh5.16.2
1.1.0-cdh5.16.99
2.1.1-cdh6.1.1
2.1.1-cdh6.2.0
2.1.1-cdh6.2.1
2.1.1-cdh6.3.0
2.1.1-cdh6.3.1
2.1.1-cdh6.3.2
2.1.1-cdh6.3.3
3.1.1-cdh7.1.1

Limites

Limite Détail
Groupes de ressources pris en charge Groupes de ressources serverless (recommandé) et groupes de ressources exclusifs pour l'intégration des données
Formats de fichiers lisibles TextFile, ORCFile ou ParquetFile
Authentification Kerberos et SSL. Si aucune authentification n'est requise, sélectionnez No Authentication pour Authentication Options lors de l'ajout de la source de données
Vues Hive Non prises en charge en mode de lecture HDFS
Caractère générique de partition multiniveau Le caractère générique * est pris en charge uniquement pour les partitions à un seul niveau

Fichiers temporaires pendant les tâches de synchronisation

Les tâches de synchronisation hors ligne génèrent des fichiers temporaires sur le serveur HDFS. Ces fichiers sont automatiquement supprimés une fois la tâche terminée. Surveillez le nombre de fichiers dans le répertoire HDFS pour éviter que le système de fichiers ne devienne indisponible.

Le paramètre dfs.namenode.fs-limits.max-directory-items contrôle le nombre maximal de fichiers ou de répertoires qu'un seul répertoire HDFS peut contenir. La valeur par défaut est 1 048 576 et la plage va de 1 à 6 400 000. Pour éviter d'atteindre cette limite, augmentez la valeur de ce paramètre ou supprimez les fichiers inutiles.

Kerberos avec principals distincts

Si HiveServer2 et Hive Metastore ont tous deux Kerberos activé mais utilisent des principals différents, ajoutez les éléments suivants aux paramètres d'extension :

{
  "hive.metastore.kerberos.principal": "<your-metastore-principal>"
}

Types de champs pris en charge

Les types de données Hive suivants sont pris en charge pour les lectures hors ligne.

Catégorie Types de données Hive
Chaîne CHAR, VARCHAR, STRING
Entier TINYINT, SMALLINT, INT, INTEGER, BIGINT
Virgule flottante FLOAT, DOUBLE, DECIMAL
Date et heure TIMESTAMP, DATE
Booléen BOOLEAN

Prérequis

Avant de configurer une source de données Hive, effectuez les étapes de configuration correspondant à votre mode de déploiement.

Mode instance Alibaba Cloud

Sélectionnez une Access Identity disposant des autorisations OSS nécessaires pour les tables que vous souhaitez synchroniser. Les identités prises en charge sont Alibaba Cloud Account, RAM User et RAM Role.

Important

Le test de connectivité ne vérifie pas les autorisations de lecture et d'écriture des données. Des autorisations insuffisantes entraîneront l'échec des tâches de synchronisation.

Mode chaîne de connexion

Configuration DLF

Si votre source de données Hive provient d'EMR et utilise DLF (Data Lake Formation) pour la gestion des métadonnées, ajoutez les éléments suivants au champ Extension Parameters :

{"dlf.catalog.id" : "my_catalog_xxxx"}

Remplacez my_catalog_xxxx par la valeur de dlf.catalog.id issue de votre configuration EMR Hive.

Configuration haute disponibilité (HA)

Si le cluster EMR Hive a la haute disponibilité (HA) activée, activez le High-availability Mode et configurez les paramètres HA dans Extension Parameters . Obtenez les valeurs de configuration depuis la console EMR en accédant au cluster cible et en cliquant sur Cluster Services dans la colonne Actions .

{
  "dfs.nameservices": "testDfs",
  "dfs.ha.namenodes.testDfs": "namenode1,namenode2",
  "dfs.namenode.rpc-address.testDfs.namenode1": "",
  "dfs.namenode.rpc-address.testDfs.namenode2": "",
  "dfs.client.failover.proxy.provider.testDfs": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
  "fs.oss.accessKeyId": "<yourAccessKeyId>",
  "fs.oss.accessKeySecret": "<yourAccessKeySecret>",
  "fs.oss.endpoint": "oss-cn-<yourRegion>-internal.aliyuncs.com"
}
Les trois derniers champs OSS ( fs.oss.* ) sont requis uniquement si le stockage sous-jacent est OSS.

Configuration de table externe OSS

Si le stockage sous-jacent est OSS :

  • Définissez defaultFS avec le préfixe oss:// , par exemple oss://bucketName .

  • Pour les tables externes OSS, ajoutez les éléments suivants à Extension Parameters :

    {
      "fs.oss.accessKeyId": "<yourAccessKeyId>",
      "fs.oss.accessKeySecret": "<yourAccessKeySecret>",
      "fs.oss.endpoint": "oss-cn-<yourRegion>-internal.aliyuncs.com"
    }
  • Pour les tables externes OSS-HDFS, utilisez plutôt le format de point de terminaison OSS-HDFS :

    {
      "fs.oss.accessKeyId": "<yourAccessKeyId>",
      "fs.oss.accessKeySecret": "<yourAccessKeySecret>",
      "fs.oss.endpoint": "cn-<yourRegion>.oss-dls.aliyuncs.com"
    }

Mode CDH

Enregistrez le cluster CDH auprès de DataWorks avant de configurer une source de données Hive en mode CDH.

Créer une source de données

Créez une source de données Hive dans DataWorks avant de développer des tâches de synchronisation. Pour la procédure complète, consultez Gestion des sources de données. Les descriptions des paramètres s'affichent sous forme d'indications contextuelles sur la page de configuration.

Les tableaux suivants décrivent les paramètres spécifiques à chaque valeur de Authentication Options .

Authentification Kerberos

Paramètre Description
Fichier keytab Le fichier .keytab généré lors de l'enregistrement d'un principal de service dans l'environnement Kerberos.
Fichier conf Le fichier de configuration Kerberos. Les fichiers principaux sont krb5.conf (paramètres du client et de la bibliothèque : valeurs globales par défaut, configurations de domaine, mappages de domaine, journalisation) et kdc.conf (paramètres du serveur Key Distribution Center : emplacement de la base de données, emplacement du fichier journal).
Principal L'entité d'identité — un utilisateur ou un service — dotée d'un nom unique et d'une clé de chiffrement associée. Format utilisateur : username@REALM . Format service : service/hostname@REALM .

Authentification SSL

Paramètre Description
Fichier de certificat Truststore Le fichier de certificat Truststore généré lorsque l'authentification SSL est activée, tel que truststore.jks .
Mot de passe Truststore Le mot de passe du fichier de certificat Truststore.
Fichier de certificat Keystore Le fichier de certificat Keystore généré lorsque l'authentification SSL est activée, tel que keystore.jks .
Mot de passe Keystore Le mot de passe du fichier de certificat Keystore.

Développer une tâche de synchronisation

Configurer une tâche de synchronisation hors ligne pour une table unique

Configurer une tâche de lecture hors ligne pour une base de données complète

Consultez Tâche de synchronisation hors ligne pour une base de données entière.

Référence des scripts

Utilisez les exemples de scripts et les tableaux de paramètres suivants lors de la configuration des tâches de synchronisation dans l'éditeur de code. Pour le format général des scripts, consultez Configurer une tâche dans l'éditeur de code.

Exemples de scripts Reader

Deux modes de lecture sont disponibles. Tous les exemples utilisent "stepType": "hive" pour l'étape de lecture.

Lecture via des fichiers HDFS (plus rapide ; aucun filtrage par clause WHERE ; les vues ne sont pas prises en charge)

{
  "type": "job",
  "steps": [
    {
      "stepType": "hive",
      "parameter": {
        "datasource": "hive_not_ha_****",
        "table": "part_table_1",
        "readMode": "hdfs",
        "partition": "pt1=a,pt2=b,pt3=c",
        "column": ["id", "pt2", "pt1"],
        "fileSystemUsername": "hdfs",
        "hivePartitionColumn": [
          {"type": "string", "value": "partition name 1"},
          {"type": "string", "value": "partition name 2"}
        ],
        "successOnNoFile": true
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "hive",
      "parameter": {},
      "name": "Writer",
      "category": "writer"
    }
  ],
  "version": "2.0",
  "order": {"hops": [{"from": "Reader", "to": "Writer"}]},
  "setting": {
    "errorLimit": {"record": ""},
    "speed": {
      "concurrent": 2,
      "throttle": true,
      "mbps": "12"
    }
  }
}

Lecture via Hive JDBC (prend en charge la clause WHERE et les requêtes SQL ; peut déclencher MapReduce)

{
  "type": "job",
  "steps": [
    {
      "stepType": "hive",
      "parameter": {
        "datasource": "hive_not_ha_****",
        "table": "part_table_1",
        "readMode": "jdbc",
        "querySql": "select id,name,age from part_table_1 where pt2='B'",
        "column": ["id", "name", "age"],
        "where": "",
        "session": ["mapred.task.timeout=600000"]
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "hive",
      "parameter": {},
      "name": "Writer",
      "category": "writer"
    }
  ],
  "version": "2.0",
  "order": {"hops": [{"from": "Reader", "to": "Writer"}]},
  "setting": {
    "errorLimit": {"record": ""},
    "speed": {
      "concurrent": 2,
      "throttle": true,
      "mbps": "12"
    }
  }
}

Paramètres Reader

Paramètre Obligatoire Description
datasource Oui Nom de la source de données. Doit correspondre au nom enregistré.
table Oui Table à lire. Sensible à la casse.
column Oui Colonnes à lire, par exemple ["id", "name"] . Ne peut pas être vide. Prend en charge le découpage des colonnes, la réorganisation, les colonnes de clé de partition et les constantes.
readMode Non Mode de lecture : hdfs pour lire directement les fichiers HDFS, ou jdbc pour lire via Hive JDBC.
partition Non Filtre de partition pour les tables partitionnées. Prend en charge * comme caractère générique uniquement pour les partitions à un seul niveau (pas pour les partitions multiniveaux). Non requis pour les tables non partitionnées ou en mode JDBC.
querySql Non Requête SQL à utiliser en mode JDBC, par exemple "SELECT id, name FROM table WHERE pt='2024-01-01'" .
where Non Clause WHERE pour le filtrage des données en mode JDBC.
session Non Configuration Hive au niveau de la session pour les lectures JDBC, par exemple ["SET hive.exec.parallel=true"] .
fileSystemUsername Non Utilisateur HDFS pour les lectures en mode HDFS. Par défaut, il s'agit de l'utilisateur défini sur la page de la source de données. Si la connexion anonyme est configurée, la valeur par défaut est le compte admin . Définissez ce paramètre en cas de problème d'autorisation.
hivePartitionColumn Non Valeurs des champs de partition à synchroniser vers la destination en aval. Basculez vers l'éditeur de code pour configurer.
successOnNoFile Non En mode HDFS, indique si la tâche s'exécute normalement lorsque le répertoire HDFS est vide.

Exemple de script Writer

{
  "type": "job",
  "steps": [
    {
      "stepType": "hive",
      "parameter": {},
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "hive",
      "parameter": {
        "datasource": "hive_ha_shanghai",
        "table": "partitiontable2",
        "partition": "year=a,month=b,day=c",
        "column": ["id", "name", "age"],
        "writeMode": "append",
        "fileSystemUsername": "hdfs"
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "version": "2.0",
  "order": {"hops": [{"from": "Reader", "to": "Writer"}]},
  "setting": {
    "errorLimit": {"record": ""},
    "speed": {
      "concurrent": 2,
      "throttle": true,
      "mbps": "12"
    }
  }
}

Paramètres Writer

Paramètre Obligatoire Description
datasource Oui Nom de la source de données. Doit correspondre au nom enregistré.
table Oui Table Hive dans laquelle écrire. Sensible à la casse.
column Oui Colonnes à écrire, par exemple ["id", "name"] . Ne peut pas être vide. La réorganisation des colonnes n'est pas prise en charge par défaut ; utilisez enableColumnExchange pour l'activer pour le format Text.
writeMode Oui Contrôle le comportement de LOAD DATA INPATH après l'écriture sur HDFS. Valeurs autorisées : truncate (efface les données existantes avant le chargement), append (conserve les données existantes) ou toute autre valeur (écrit uniquement sur HDFS, sans chargement dans la table Hive). Il s'agit d'un paramètre à haut risque : vérifiez le répertoire d'écriture et le comportement attendu avant utilisation.
hiveConfig Oui Paramètres de connexion Hive pour l'opération LOAD DATA . Configurez soit hiveCommand (chemin complet vers le client Hive, utilisé avec hive -e ), soit jdbcUrl + username + password (accès Hive JDBC). Accepte également les paramètres avancés du client HDFS.
partition Non Partition pour les tables partitionnées. Requis lors de l'écriture dans une table partitionnée.
fileSystemUsername Non Utilisateur HDFS pour les opérations d'écriture. Par défaut, il s'agit de l'utilisateur défini sur la page de la source de données. Si la connexion anonyme est configurée, la valeur par défaut est le compte admin .
enableColumnExchange Non Définissez sur true pour activer la réorganisation des colonnes. Pris en charge uniquement pour le format Text.
nullFormat Non Définit quelles valeurs de chaîne sont traitées comme nulles. Par exemple, "nullFormat": "null" interprète la chaîne null comme une valeur nulle. Notez que la chaîne "null" est distincte d'une valeur nulle réelle.

Étapes suivantes