Tous les produits
Search
Centre de documentation

Object Storage Service:Utilisation de JindoSDK avec Hive pour traiter les données stockées dans OSS-HDFS

Dernière mise à jour :Aug 18, 2026

Si vous utilisez Hive pour construire un entrepôt de données traditionnel hors ligne reposant sur HDFS, les coûts augmentent considérablement à mesure que le volume de données s'accroît. Dans ce cas, utilisez OSS-HDFS (JindoFS) comme couche de stockage sous-jacente de votre entrepôt de données Hive et tirez parti de JindoSDK pour optimiser les performances en lecture et en écriture.

Prérequis

  • Par exemple, si vous déployez votre infrastructure sur Alibaba Cloud ECS, vous devez acheter une instance ECS.

  • Le service OSS-HDFS est activé pour un bucket et les autorisations d'accès sont configurées. Pour plus d'informations, consultez la rubrique Activation du service OSS-HDFS.

  • Un client Hive est déployé.

Procédure

  1. Connectez-vous à l'instance ECS. Pour plus d'informations, consultez la rubrique Connexion à une instance ECS.

  2. Configurez JindoSDK.

    1. Téléchargez la dernière version du package JAR de JindoSDK. Pour télécharger JindoSDK, rendez-vous sur GitHub.

    2. Décompressez le package JAR de JindoSDK.

      L'exemple de code suivant illustre la décompression d'un package nommé jindosdk-x.x.x-linux.tar.gz. Si vous utilisez une autre version de JindoSDK, remplacez le nom du package par celui du fichier JAR correspondant.

      tar zxvf jindosdk-x.x.x-linux.tar.gz
      Remarque

      x.x.x représente le numéro de version du package JAR de JindoSDK.

    3. Copiez le package JAR de JindoSDK dans le chemin classpath de Hive.

      cp jindosdk-x.x.x-linux/lib/*.jar  $HIVE_HOME/lib/
  3. Configurez la classe d'implémentation d'OSS-HDFS ainsi que la paire AccessKey utilisée pour accéder au bucket

    1. Configurez la classe d'implémentation d'OSS-HDFS dans le fichier core-site.xml de Hive.

      <configuration>
          <property>
              <name>fs.AbstractFileSystem.oss.impl</name>
              <value>com.aliyun.jindodata.oss.JindoOSS</value>
          </property>
      
          <property>
              <name>fs.oss.impl</name>
              <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value>
          </property>
      </configuration>
    2. Dans le fichier core-site.xml de Hive, spécifiez l'AccessKey ID et l'AccessKey Secret que vous souhaitez utiliser pour accéder au bucket sur lequel OSS-HDFS est activé.

      <configuration>
          <property>
              <name>fs.oss.accessKeyId</name>
              <value>LTAI******** </value>
          </property>
      
          <property>
              <name>fs.oss.accessKeySecret</name>
              <value>KZo1********</value>
          </property>
      </configuration>
  4. Configurez l'endpoint d'OSS-HDFS.

    Vous devez spécifier l'endpoint d'OSS-HDFS si vous souhaitez utiliser ce service pour accéder aux buckets dans Object Storage Service (OSS). Nous vous recommandons de configurer le chemin d'accès à OSS-HDFS en utilisant le format oss://<Bucket>.<Endpoint>/<Object> (exemple : oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt). Une fois l'endpoint configuré, JindoSDK accède à l'opération OSS-HDFS correspondante en se basant sur l'endpoint spécifié dans le chemin d'accès.

    Il est également possible de configurer l'endpoint d'OSS-HDFS via d'autres méthodes. Les endpoints configurés selon différentes approches possèdent des priorités distinctes. Pour plus de détails, consultez la rubrique Démarrage rapide : Connexion d'un cluster non-EMR au service OSS-HDFS.

    Important

    Après avoir effectué les configurations précédentes, vous devez redémarrer Hive pour qu'elles prennent effet.

  5. Exécutez la commande suivante sur le terminal pour vous connecter à Hive.

    Pour découvrir d'autres méthodes de connexion, consultez la rubrique Méthodes de connexion à Hive.

    hive
  6. Utilisez OSS-HDFS pour stocker les données.

    Lors de la création d'une base de données ou d'une table, vous pouvez utiliser l'une des méthodes suivantes pour définir un chemin OSS-HDFS comme emplacement de stockage :

    • Méthode 1 : Spécification du chemin de stockage OSS-HDFS directement dans la commande

      • Spécifiez le chemin de stockage OSS-HDFS lors de la création d'une base de données :

        CREATE DATABASE db_on_oss1 LOCATION 'oss://bucket_name.endpoint_name/path/to/db1';
      • Spécifiez le chemin de stockage OSS-HDFS lors de la création d'une table :

        CREATE TABLE db2.table_on_oss (
            id INT,
            name STRING,
            age INT
        ) LOCATION 'oss://bucket_name.endpoint_name/path/to/db2/tablepath';
    • Méthode 2 : Spécification du chemin de stockage OSS-HDFS dans le fichier de configuration de Hive

      Définissez la valeur de hive.metastore.warehouse.dir vers le chemin de stockage OSS-HDFS dans le fichier de configuration hive-site.xml de Hive Metastore, puis redémarrez Hive Metastore. Les bases de données et tables créées ultérieurement seront alors stockées à l'emplacement OSS-HDFS spécifié.

      L'exemple de code suivant montre comment configurer hive.metastore.warehouse.dir avec le chemin de stockage OSS-HDFS :

      <configuration>
      
          <property>
              <name>hive.metastore.warehouse.dir</name>
              <value>oss://bucket_name.endpoint_name/path/to/warehouse</value>
          </property>
      
      </configuration>
  7. Ajoutez des partitions à une table existante.

    L'ajout de partitions à une table existante permet de subdiviser le stockage des données en unités plus petites. Vous pouvez ainsi spécifier des conditions de requête basées sur ces partitions. Seules les partitions répondant aux critères définis seront analysées, ce qui améliore les performances des requêtes.

    • Syntaxe de la commande

      ALTER TABLE <table_name> ADD [IF NOT EXISTS] PARTITION <pt_spec> [PARTITION <pt_spec> PARTITION <pt_spec>...] LOCATION 'location';

      Le tableau suivant décrit les paramètres de la commande ci-dessus.

      Paramètre

      Obligatoire

      Description

      table_name

      Oui

      Nom de la table à laquelle vous souhaitez ajouter des partitions.

      IF NOT EXISTS

      Non

      Ce paramètre permet d'ignorer l'erreur si la table contient déjà une partition portant le même nom. Si le paramètre IF NOT EXISTS n'est pas spécifié et qu'une partition du même nom existe déjà, l'opération échoue et une erreur est renvoyée.

      pt_spec

      Oui

      Partitions à ajouter. La valeur de ce paramètre suit le format (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...). Dans ce format, partition_col représente les noms des colonnes de clé de partition, et partition_col_value leurs valeurs. Les noms des colonnes de clé de partition ne sont pas sensibles à la casse, tandis que leurs valeurs le sont.

      location

      Oui

      Chemin OSS utilisé pour stocker les données d'une partition.

    • Exemples

      L'exemple de code suivant montre comment ajouter une partition à une table nommée sale_detail afin de stocker les enregistrements de vente pour la région Chine (Hangzhou) en décembre 2021, tout en spécifiant le chemin OSS dédié au stockage des données de cette partition :

      ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date='202112', region='hangzhou') LOCATION 'oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/path/2021/';