Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Hive ile JindoSDK kullanarak OSS-HDFS'de depolanan verileri işleme

Son Güncelleme:Oct 01, 2026

Veri depolamak için HDFS kullanan geleneksel bir çevrimdışı veri ambarı oluşturmak üzere Hive kullanıyorsanız, ambarlarda depolanan veri miktarı arttıkça maliyetler yükselir. Bu durumda, Hive veri ambarının alttaki depolama katmanı olarak OSS-HDFS'i (JindoFS) kullanabilir ve daha iyi okuma/yazma performansı elde etmek için JindoSDK'dan yararlanabilirsiniz.

Önkoşullar

  • Örneğin, dağıtımınız için Alibaba Cloud ECS kullanıyorsanız bir ECS örneği satın almanız gerekir.

  • Bir paket için OSS-HDFS hizmeti etkinleştirilmiş ve hizmete erişim yetkilendirilmiştir. Daha fazla bilgi için bkz. OSS-HDFS hizmetini etkinleştirme.

  • Bir Hive istemcisi dağıtılmıştır.

Yordam

  1. ECS örneğine bağlanın. Daha fazla bilgi için bkz. Bir ECS örneğine bağlanma.

  2. JindoSDK'yı yapılandırın.

    1. JindoSDK JAR paketinin en son sürümünü indirin. JindoSDK'yı indirmek için GitHub adresini ziyaret edin.

    2. JindoSDK JAR paketini açın.

      Aşağıdaki örnek kod, jindosdk-x.x.x-linux.tar.gz adlı bir paketin nasıl açılacağını gösterir. Farklı bir JindoSDK sürümü kullanıyorsanız paket adını ilgili JAR paketinin adıyla değiştirin.

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

      x.x.x, JindoSDK JAR paketinin sürüm numarasını belirtir.

    3. JindoSDK JAR paketini Hive'in classpath yoluna kopyalayın.

      cp jindosdk-x.x.x-linux/lib/*.jar  $HIVE_HOME/lib/
  3. OSS-HDFS uygulama sınıfını ve bir pakete erişmek için kullanılan AccessKey çiftini yapılandırın

    1. Hive'in core-site.xml dosyasında OSS-HDFS uygulama sınıfını yapılandırın.

      <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. Hive'in core-site.xml dosyasında, OSS-HDFS'nin etkinleştirildiği pakete erişmek için kullanmak istediğiniz AccessKey ID ve AccessKey secret değerlerini belirtin.

      <configuration>
          <property>
              <name>fs.oss.accessKeyId</name>
              <value>LTAI******** </value>
          </property>
      
          <property>
              <name>fs.oss.accessKeySecret</name>
              <value>KZo1********</value>
          </property>
      </configuration>
  4. OSS-HDFS uç noktasını yapılandırın.

    Object Storage Service (OSS) paketlerine erişmek için OSS-HDFS kullanmak istiyorsanız OSS-HDFS uç noktasını belirtmeniz gerekir. OSS-HDFS'e erişim için kullanılan yolu oss://<Bucket>.<Endpoint>/<Object> biçiminde (örnek: oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt) yapılandırmanızı öneririz. Uç noktayı yapılandırdıktan sonra JindoSDK, erişim yolundaki belirtilen uç noktaya göre ilgili OSS-HDFS işlemine erişir.

    OSS-HDFS uç noktasını başka yöntemlerle de yapılandırabilirsiniz. Farklı yöntemlerle yapılandırılan uç noktaların öncelikleri farklıdır. Daha fazla bilgi için bkz. Hızlı başlangıç: EMR olmayan bir kümeyi OSS-HDFS hizmetine bağlama.

    Önemli

    Yukarıdaki yapılandırmaları tamamladıktan sonra yapılandırmaların etkili olması için Hive'i yeniden başlatmanız gerekir.

  5. Hive'e bağlanmak için terminalde aşağıdaki komutu çalıştırın.

    Diğer bağlantı yöntemleri için bkz. Hive bağlantı yöntemleri.

    hive
  6. Verileri depolamak için OSS-HDFS kullanın.

    Bir veritabanı veya tablo oluştururken, veritabanının veya tablonun depolama yolu olarak bir OSS-HDFS yolunu belirtmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:

    • Yöntem 1: Komutta OSS-HDFS depolama yolunu belirtme

      • Bir veritabanı oluştururken OSS-HDFS depolama yolunu belirtin:

        CREATE DATABASE db_on_oss1 LOCATION 'oss://bucket_name.endpoint_name/path/to/db1';
      • Bir tablo oluştururken OSS-HDFS depolama yolunu belirtin:

        CREATE TABLE db2.table_on_oss (
            id INT,
            name STRING,
            age INT
        ) LOCATION 'oss://bucket_name.endpoint_name/path/to/db2/tablepath';
    • Yöntem 2: Hive yapılandırma dosyasında OSS-HDFS depolama yolunu belirtme

      Hive Metastore'un hive-site.xml yapılandırma dosyasında hive.metastore.warehouse.dir değerini OSS-HDFS depolama yoluna ayarlayabilir ve Hive Metastore'u yeniden başlatabilirsiniz. Daha sonra oluşturulan veritabanları ve tablolar belirtilen OSS-HDFS depolama yolunda saklanır.

      Aşağıdaki örnek kod, hive.metastore.warehouse.dir değerini OSS-HDFS depolama yoluna ayarlama işlemini gösterir:

      <configuration>
      
          <property>
              <name>hive.metastore.warehouse.dir</name>
              <value>oss://bucket_name.endpoint_name/path/to/warehouse</value>
          </property>
      
      </configuration>
  7. Mevcut bir tabloya bölümler ekleyin.

    Tablonun verilerini daha küçük birimlerde depolamak için mevcut bir tabloya bölümler ekleyebilirsiniz. Sorgu koşullarını bölümlere göre belirtebilirsiniz. Bu sayede yalnızca belirtilen koşulları karşılayan bölümler taranır ve sorgu performansı artırılır.

    • Komut sözdizimi

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

      Aşağıdaki tabloda yukarıdaki komuttaki parametreler açıklanmaktadır.


      Parametre


      Zorunlu


      Açıklama


      table_name


      Evet


      Bölüm eklemek istediğiniz tablonun adı.


      IF NOT EXISTS


      Hayır


      Tabloda aynı ada sahip bir bölüm varsa hatanın atlanmasına neden olan parametre. IF NOT EXISTS parametresi belirtilmezse ve eklemek istediğiniz bölümle aynı ada sahip bir bölüm zaten mevcutsa işlem başarısız olur ve bir hata döndürülür.


      pt_spec


      Evet


      Eklemek istediğiniz bölümler. Bu parametrenin değeri (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...) biçimindedir. Bu biçimde partition_col bölüm anahtar sütunlarının adlarını, partition_col_value ise bunların değerlerini temsil eder. Bölüm anahtar sütunlarının adları büyük/küçük harfe duyarlı değildir, değerleri ise büyük/küçük harfe duyarlıdır.


      location


      Evet


      Bir bölümdeki verileri depolamak için kullanılan OSS yolu.

    • Örnekler

      Aşağıdaki örnek kod, China (Hangzhou) bölgesindeki Aralık 2021 satış kayıtlarını depolamak üzere sale_detail adlı bir tabloya bölüm ekleme ve bölümdeki verilerin depolanacağı OSS yolunu belirtme işlemini gösterir:

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