Todos os produtos
Search
Central de documentação

Object Storage Service:Use JindoSDK com Hive para processar dados armazenados no OSS-HDFS

Última atualização: Jul 03, 2026

Se você usa o Hive para construir um data warehouse offline tradicional com armazenamento em HDFS, os custos podem aumentar significativamente conforme o volume de dados cresce. Nesse cenário, use o OSS-HDFS (JindoFS) como armazenamento subjacente do data warehouse Hive e utilize o JindoSDK para obter melhor desempenho de leitura e escrita.

Pré-requisitos

  • Por exemplo, se você usar o Alibaba Cloud ECS para sua implantação, será necessário comprar uma instância ECS.

  • O serviço OSS-HDFS está ativado para um bucket e o acesso ao serviço está autorizado. Para mais informações, consulte Ative o serviço OSS-HDFS.

  • Um cliente Hive está implantado.

Procedimento

  1. Conecte-se à instância ECS. Para mais informações, consulte Conectar-se a uma instância ECS.

  2. Configure o JindoSDK.

    1. Baixe a versão mais recente do pacote JAR do JindoSDK. Para baixe o JindoSDK, visite o GitHub.

    2. Descompacte o pacote JAR do JindoSDK.

      O código de exemplo a seguir mostra como descompactar um pacote chamado jindosdk-x.x.x-linux.tar.gz. Se você usar outra versão do JindoSDK, substitua o nome pelo arquivo JAR correspondente.

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

      x.x.x representa o número da versão do pacote JAR do JindoSDK.

    3. Copie o pacote JAR do JindoSDK para o caminho classpath do Hive.

      cp jindosdk-x.x.x-linux/lib/*.jar  $HIVE_HOME/lib/
  3. Configure a classe de implementação do OSS-HDFS e o par de AccessKey usado para acessar um bucket

    1. Defina a classe de implementação do OSS-HDFS no arquivo core-site.xml do 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. No arquivo core-site.xml do Hive, especifique o AccessKey ID e o AccessKey secret que deseja usar para acessar o bucket com o OSS-HDFS ativado.

      <configuration>
          <property>
              <name>fs.oss.accessKeyId</name>
              <value>LTAI******** </value>
          </property>
      
          <property>
              <name>fs.oss.accessKeySecret</name>
              <value>KZo1********</value>
          </property>
      </configuration>
  4. Configure o endpoint do OSS-HDFS.

    Especifique o endpoint do OSS-HDFS para acessar buckets no Object Storage Service (OSS). Recomendamos configurar o caminho de acesso ao OSS-HDFS no formato oss://<Bucket>.<Endpoint>/<Object> (exemplo: oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt). Após essa configuração, o JindoSDK acessará a operação correspondente do OSS-HDFS com base no endpoint definido no caminho.

    Também é possível definir o endpoint do OSS-HDFS por outros métodos. Endpoints configurados de formas distintas possuem prioridades diferentes. Para mais detalhes, consulte Início rápido: Conectar um cluster não EMR ao serviço OSS-HDFS.

    Importante

    Após concluir as configurações anteriores, reinicie o Hive para que elas entrem em vigor.

  5. Execute o comando a seguir no terminal para se conectar ao Hive.

    Para outros métodos de conexão, consulte Métodos de conexão do Hive.

    hive
  6. Use o OSS-HDFS para armazenar dados.

    Ao crie um banco de dados ou tabela, use um dos métodos a seguir para defina um caminho do OSS-HDFS como local de armazenamento:

    • Método 1: Especifique o caminho de armazenamento do OSS-HDFS diretamente no comando

      • Defina o caminho do OSS-HDFS durante a criação do banco de dados:

        CREATE DATABASE db_on_oss1 LOCATION 'oss://bucket_name.endpoint_name/path/to/db1';
      • Indique o caminho do OSS-HDFS ao crie uma tabela:

        CREATE TABLE db2.table_on_oss (
            id INT,
            name STRING,
            age INT
        ) LOCATION 'oss://bucket_name.endpoint_name/path/to/db2/tablepath';
    • Método 2: Configure o caminho de armazenamento do OSS-HDFS no arquivo de configuração do Hive

      Defina o valor de hive.metastore.warehouse.dir como o caminho do OSS-HDFS no arquivo de configuração hive-site.xml do Hive Metastore e reinicie o Hive Metastore. Bancos de dados e tabelas criados posteriormente serão armazenados no caminho especificado.

      O exemplo a seguir ilustra como defina hive.metastore.warehouse.dir para o caminho de armazenamento do OSS-HDFS:

      <configuration>
      
          <property>
              <name>hive.metastore.warehouse.dir</name>
              <value>oss://bucket_name.endpoint_name/path/to/warehouse</value>
          </property>
      
      </configuration>
  7. Adicione partições a uma tabela existente.

    A adição de partições permite organizar os dados de uma tabela em unidades menores. Ao filtrar consultas por partições, apenas os segmentos relevantes são verificados, o que melhora o desempenho das buscas.

    • Sintaxe do comando

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

      A tabela a seguir descreve os parâmetros do comando anterior.

      Parâmetro

      Obrigatório

      Descrição

      table_name

      Sim

      Nome da tabela à qual as partições serão adicionadas.

      IF NOT EXISTS

      Não

      Evita erros caso já exista uma partição com o mesmo nome. Se omitido e houver duplicidade, a operação falhará e retornará um erro.

      pt_spec

      Sim

      Partições a serem adicionadas. O valor segue o formato (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...), onde partition_col representa os nomes das colunas de chave de partição e partition_col_value seus respectivos valores. Os nomes das colunas não diferenciam maiúsculas de minúsculas, mas os valores diferenciam.

      location

      Sim

      Caminho do OSS destinado ao armazenamento dos dados da partição.

    • Exemplos

      O código a seguir demonstra como adicionar uma partição à tabela sale_detail para registrar vendas da região China (Hangzhou) em dezembro de 2021, definindo também o caminho do OSS para esses dados:

      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/';