全部产品
Search
文档中心

Object Storage Service:Gunakan JindoSDK dengan Hive untuk memproses data yang disimpan di OSS-HDFS

更新时间:Nov 09, 2025

Saat membangun gudang data offline menggunakan Hive, solusi penyimpanan tradisional berbasis HDFS mungkin tidak lagi hemat biaya seiring dengan meningkatnya volume data. Dalam situasi ini, Anda dapat menggunakan OSS-HDFS sebagai penyimpanan utama untuk gudang data Hive dan memanfaatkan JindoSDK untuk mencapai kinerja baca-tulis yang lebih baik.

Prasyarat

  • Sebuah Instance ECS telah dibeli. Panduan ini menggunakan Instance ECS Alibaba Cloud sebagai contoh. Untuk informasi lebih lanjut, lihat Beli Instance ECS.

  • OSS-HDFS telah diaktifkan untuk sebuah bucket, dan izin telah diberikan kepada Peran RAM untuk mengakses OSS-HDFS. Untuk detail lebih lanjut, lihat Aktifkan OSS-HDFS dan Berikan Izin Akses.

  • Klien Hive telah diterapkan.

Prosedur

  1. Hubungkan ke Instance ECS. Untuk informasi lebih lanjut, lihat Hubungkan ke Instance.

  2. Konfigurasikan JindoSDK.

    1. Unduh versi terbaru dari paket JAR JindoSDK. Untuk alamat unduhan, lihat GitHub.

    2. Ekstrak paket JAR JindoSDK.

      Contoh kode berikut menunjukkan cara mengekstrak paket bernama jindosdk-x.x.x-linux.tar.gz. Jika Anda menggunakan versi JindoSDK yang berbeda, ganti nama paket sesuai dengan versi yang digunakan.

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

      x.x.x menunjukkan nomor versi paket JAR JindoSDK.

    3. Salin paket JAR JindoSDK yang diunduh ke classpath Hive.

      cp jindosdk-x.x.x-linux/lib/*.jar  $HIVE_HOME/lib/
  3. Konfigurasikan kelas implementasi OSS-HDFS dan Pasangan Kunci Akses.

    1. Konfigurasikan kelas implementasi OSS-HDFS dalam file core-site.xml 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. Konfigurasikan ID AccessKey dan Rahasia AccessKey untuk bucket tempat OSS-HDFS diaktifkan dalam file core-site.xml Hive.

      <configuration>
          <property>
              <name>fs.oss.accessKeyId</name>
              <value>LTAI******** </value>
          </property>
      
          <property>
              <name>fs.oss.accessKeySecret</name>
              <value>KZo1********</value>
          </property>
      </configuration>
  4. Konfigurasikan Titik Akhir OSS-HDFS.

    Saat menggunakan OSS-HDFS untuk mengakses Bucket OSS, Anda harus mengonfigurasi titik akhir. Format jalur akses yang direkomendasikan adalah oss://<Bucket>.<Endpoint>/<Object>, misalnya, oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt. Setelah konfigurasi selesai, JindoSDK akan menggunakan titik akhir dalam jalur akses untuk mengakses Operasi API OSS-HDFS yang sesuai.

    Anda juga dapat mengonfigurasi titik akhir OSS-HDFS menggunakan metode lain. Prioritas titik akhir yang dikonfigurasi bergantung pada metode yang digunakan. Untuk informasi lebih lanjut, lihat Lampiran 1: Metode Lain untuk Mengonfigurasi Titik Akhir.

    Penting

    Setelah menyelesaikan konfigurasi, Anda harus me-restart Hive agar perubahan berlaku.

  5. Jalankan perintah berikut di terminal untuk terhubung ke Hive.

    Untuk informasi lebih lanjut tentang metode koneksi lainnya, lihat Metode Koneksi Hive.

    hive
  6. Simpan Data Menggunakan OSS-HDFS.

    Saat membuat database atau tabel, Anda dapat menggunakan salah satu dari dua metode berikut untuk menentukan jalur OSS-HDFS guna menyimpan data di OSS-HDFS.

    • Metode 1: Tentukan Jalur OSS-HDFS dalam Perintah

      • Tentukan jalur OSS-HDFS saat membuat database.

        CREATE DATABASE db_on_oss1 LOCATION 'oss://bucket_name.endpoint_name/path/to/db1';
      • Tentukan jalur OSS-HDFS saat membuat tabel.

        CREATE TABLE db2.table_on_oss (
            id INT,
            name STRING,
            age INT
        ) LOCATION 'oss://bucket_name.endpoint_name/path/to/db2/tablepath';
    • Metode 2: Tentukan Jalur OSS-HDFS dalam File Konfigurasi

      Anda dapat mengatur hive.metastore.warehouse.dir ke jalur OSS-HDFS dalam file konfigurasi hive-site.xml Hive Metastore, lalu restart Hive Metastore. Secara default, database dan tabel yang dibuat kemudian akan disimpan di jalur OSS-HDFS yang ditentukan.

      Contoh kode berikut menunjukkan konfigurasi:

      <configuration>
      
          <property>
              <name>hive.metastore.warehouse.dir</name>
              <value>oss://bucket_name.endpoint_name/path/to/warehouse</value>
          </property>
      
      </configuration>
  7. Tambahkan Partisi ke Tabel yang Ada.

    Anda dapat menambahkan partisi ke tabel yang ada untuk membaginya menjadi unit penyimpanan yang lebih kecil. Berdasarkan kondisi kueri, hanya partisi yang memenuhi kondisi yang dipindai, sehingga menghindari pemindaian tabel penuh. Ini secara signifikan meningkatkan kinerja kueri.

    • Format Perintah

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

      Tabel berikut menjelaskan parameter.

      Parameter

      Opsional

      Deskripsi

      table_name

      Ya

      Nama tabel tempat Anda ingin menambahkan partisi.

      IF NOT EXISTS

      Opsional

      Jika Anda tidak menentukan IF NOT EXISTS, operasi gagal dan kesalahan dikembalikan jika partisi dengan nama yang sama sudah ada.

      pt_spec

      Wajib

      Partisi yang akan ditambahkan. Formatnya adalah (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...). Dalam format ini, partition_col menunjukkan bidang partisi, dan partition_col_value menunjukkan nilai partisi. Bidang partisi tidak peka huruf besar/kecil, sedangkan nilai partisi peka huruf besar/kecil.

      location

      Wajib

      Jalur OSS tempat partisi disimpan.

    • Contoh

      Contoh berikut menunjukkan cara menambahkan partisi ke tabel sale_detail untuk menyimpan catatan penjualan wilayah China (Hangzhou) pada Desember 2021. Partisi disimpan di jalur OSS yang ditentukan.

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