All Products
Search
Document Center

E-MapReduce:Konektor Hive

Last Updated:Aug 23, 2026

Konektor Hive memungkinkan Anda menjalankan kueri dan menganalisis data yang disimpan di gudang data Hive.

Latar Belakang

Gudang data Hive terdiri dari tiga komponen:
  • File data dalam berbagai format, biasanya disimpan di Hadoop Distributed File System (HDFS) atau sistem penyimpanan objek seperti Alibaba Cloud OSS.
  • Metadata yang memetakan file data ke skema dan tabel, disimpan di database seperti MySQL, dan diakses melalui Hive Metastore Service (HMS).
  • Bahasa kueri bernama HiveQL, yang berjalan di atas kerangka kerja komputasi terdistribusi seperti MapReduce atau Tez.

Prasyarat

Anda telah membuat kluster DataLake atau kluster Hadoop dan memilih layanan Presto. Untuk petunjuknya, lihat Buat kluster.

Batasan

  • Konektor Hive memerlukan Hive Metastore Service agar dikonfigurasi.
  • Konektor Hive mendukung berbagai sistem penyimpanan terdistribusi, termasuk HDFS, Alibaba Cloud OSS, dan sistem lain yang kompatibel dengan OSS. Node koordinator dan semua node pekerja harus memiliki akses jaringan ke Hive Metastore maupun sistem penyimpanan dasarnya. Secara default, Hive Metastore berkomunikasi melalui protokol Thrift pada port 9083.

Memodifikasi konfigurasi konektor Hive

Untuk memodifikasi konfigurasi konektor Hive, lihat Konfigurasikan konektor.

Konfigurasi konektor default

Di Konsol EMR, buka halaman Configure layanan Presto. Di bagian Service Configuration, klik tab hive.properties. Anda dapat melihat parameter berikut dan memodifikasinya sesuai kebutuhan.
Parameter Deskripsi
hive.recursive-directories Mengaktifkan pembacaan data dari subdirektori lokasi tabel atau partisi. Ini mirip dengan properti hive.mapred.supports.subdirectories di Hive.
hive.metastore.uri URI untuk menghubungkan ke Hive Metastore menggunakan protokol Thrift.

Nilai default berformat thrift://<master-node-name>.cluster-24****:9083.

hive.config.resources Daftar file konfigurasi HDFS yang dipisahkan koma. File-file ini harus ada di semua host Presto.
Penting Konfigurasikan parameter ini hanya jika diperlukan akses ke HDFS.
hive.delta-table-enabled Menentukan apakah Presto dapat membaca tabel Delta Lake. Nilai yang valid adalah:
  • true (default): Presto dapat membaca tabel Delta Lake.
  • false: Presto tidak dapat membaca tabel Delta Lake.
hive.delta-compatible-mode-enabled Menentukan apakah mode kompatibilitas untuk tabel Delta Lake diaktifkan. Nilai yang valid adalah:
  • true (default): Mode kompatibilitas diaktifkan untuk tabel Delta Lake.
  • false: Mode kompatibilitas tidak diaktifkan untuk tabel Delta Lake.
hive.hdfs.impersonation.enabled Menentukan apakah impersonasi pengguna diaktifkan. Nilai yang valid adalah:
  • true: Impersonasi pengguna diaktifkan.
  • false (default): Impersonasi pengguna tidak diaktifkan.

Konfigurasi untuk beberapa kluster Hive

Jika Anda memiliki beberapa kluster Hive, Anda dapat menambahkan beberapa file katalog ke direktori etc/catalog. Pastikan setiap file memiliki ekstensi .properties.

Sebagai contoh, jika file properties bernama sales.properties, Presto menggunakan konfigurasi konektor dalam file tersebut untuk membuat katalog bernama sales.

Konfigurasi HDFS

Presto secara otomatis mengonfigurasi klien HDFS dan biasanya tidak memerlukan file konfigurasi tambahan. Namun, dalam beberapa kasus—seperti saat Anda mengaktifkan HDFS federasi atau high availability NameNode—Anda harus menentukan opsi klien HDFS tambahan untuk mengakses kluster HDFS Anda. Untuk melakukan ini, tambahkan properti hive.config.resources untuk mereferensikan file konfigurasi HDFS yang diperlukan.
Penting
  • Sertakan hanya himpunan minimum properti yang diperlukan dalam file untuk mencegah ketidakcocokan.
  • File konfigurasi harus tersedia di semua host Presto. Jika Anda mereferensikan file konfigurasi Hadoop yang sudah ada, pastikan untuk menyalinnya ke semua node Presto yang tidak menjalankan Hadoop.

Username dan izin HDFS

Sebelum menjalankan pernyataan CREATE TABLE atau CREATE TABLE AS apa pun untuk tabel Hive di Presto, pastikan pengguna yang digunakan Presto untuk mengakses HDFS memiliki izin ke direktori warehouse Hive. Direktori warehouse Hive ditentukan oleh variabel konfigurasi hive.metastore.warehouse.dir dalam file hive-site.xml. Nilai default-nya adalah /user/hive/warehouse.

Tipe file yang didukung

Konektor Hive mendukung tipe file berikut.
Tipe file Catatan
ORC Tidak ada
Parquet Tidak ada
Avro Tidak ada
RCText RCFile yang menggunakan ColumnarSerDe.
RCBinary RCFile yang menggunakan LazyBinaryColumnarSerDe.
SequenceFile Tidak ada
JSON Menggunakan org.apache.hive.hcatalog.data.JsonSerDe.
CSV Menggunakan org.apache.hadoop.hive.serde2.OpenCSVSerde.
TextFile Tidak ada

Tipe tabel yang didukung

Konektor Hive mendukung tipe tabel berikut.
Tipe Deskripsi
Tabel ACID Saat terhubung ke Hive Metastore versi 3.x, konektor Hive dapat membaca dan menulis ke tabel insert-only dan tabel ACID. Konektor ini sepenuhnya mendukung partisi dan bucket.

Konektor ini mendukung operasi DELETE dan UPDATE tingkat baris untuk tabel ACID. Namun, tidak mendukung operasi UPDATE pada kolom kunci partisi dan kolom bucket. Konektor ini tidak mendukung kueri terhadap tabel ACID yang dibuat oleh Hive Streaming Ingest. Untuk informasi lebih lanjut, lihat Streaming Data Ingest.

materialized view Konektor Hive dapat membaca data dari materialized view Hive. Di Presto, tampilan ini disajikan sebagai tabel reguler yang read-only.

Tampilan Hive

Tampilan Hive didefinisikan dalam HiveQL dan disimpan di Hive Metastore Service.

Konektor Hive mendukung tampilan Hive dalam tiga mode berikut.
Mode Deskripsi
Disabled Logika bisnis dan data yang dikodekan dalam tampilan tidak terlihat di Presto.

Secara default, Presto mengabaikan tampilan Hive.

Legacy Implementasi sederhana yang memungkinkan Presto membaca data dari tampilan Hive.

Untuk mengaktifkan mode ini, atur hive.translate-hive-views=true dan hive.legacy-hive-view-translation=true.

Untuk mengaktifkan akses legacy sementara untuk katalog tertentu, atur properti session katalog legacy_hive_view_translation ke true.

Karena HiveQL sangat mirip dengan SQL, mode legacy menginterpretasikan kueri HiveQL tampilan sebagai SQL standar tanpa translasi.

Pendekatan ini berfungsi untuk tampilan Hive sederhana tetapi dapat menyebabkan masalah pada kueri kompleks. Misalnya, jika fungsi HiveQL memiliki signature yang sama dengan fungsi SQL tetapi perilaku berbeda, hasilnya mungkin berbeda. Dalam kasus ekstrem, kueri mungkin gagal diurai atau dieksekusi.

Experimental Mode ini menganalisis, memproses, dan menulis ulang tampilan Hive, termasuk ekspresi dan pernyataannya.

Untuk mengaktifkan mode ini, atur hive.translate-hive-views=true.

Mode ini belum mendukung fitur-fitur berikut:
  • Pernyataan HiveQL seperti current_date, current_timestamp, dan sejenisnya.
  • Pemanggilan fungsi Hive seperti translate(), fungsi jendela, dan sejenisnya.
  • Ekspresi tabel umum (common table expressions) dan ekspresi case sederhana.
  • Pengaturan presisi timestamp.
  • Pemetaan yang benar dari semua tipe data Hive ke tipe Presto.
  • Penanganan UDF kustom.

Properti konfigurasi

Properti konfigurasi Hive

Konektor Hive mendukung akselerasi dengan JindoTable. Kluster EMR menyertakan dua konektor Hive bawaan: hive.properties dan hive-acc.properties. File hive-acc.properties mencakup JindoTable Native Engine untuk mengoptimalkan dan mempercepat file dalam format ORC atau Parquet. Lihat dokumentasi untuk versi SmartData Anda. Untuk detailnya, lihat Aktifkan akselerasi kueri native.

Tabel berikut mencantumkan properti konfigurasi untuk konektor Hive.
Parameter Deskripsi
hive.config.resources Daftar file konfigurasi HDFS yang dipisahkan koma. File-file ini harus ada di semua host Presto.
Catatan Konfigurasikan properti ini hanya jika diperlukan akses ke HDFS.
hive.recursive-directories Mengizinkan pembacaan data dari subdirektori lokasi tabel atau partisi, mirip dengan properti Hive hive.mapred.supports.subdirectories.
hive.ignore-absent-partitions Mengabaikan partisi jika lokasi sistem file-nya tidak ada, alih-alih menggagalkan kueri. Hal ini dapat menyebabkan data dilewatkan.

Nilai default adalah false.

hive.storage-format Menentukan format file default untuk tabel baru.

Nilai default adalah ORC.

hive.compression-codec Menentukan kodek kompresi yang digunakan saat menulis file. Nilai yang valid: NONE, SNAPPY, LZ4, ZSTD, atau GZIP.

Nilai default adalah GZIP.

hive.force-local-scheduling Memaksa split dijadwalkan pada node yang sama dengan Hadoop DataNode. Konfigurasi ini meningkatkan efisiensi untuk instalasi tempat Presto berada di node yang sama dengan setiap DataNode.

Nilai default adalah false.

hive.respect-table-format Mengontrol apakah partisi baru menggunakan format tabel yang sudah ada atau format Presto. Nilai yang valid:
  • true (default): Gunakan format tabel yang sudah ada.
  • false: Gunakan format Presto.
hive.immutable-partitions Mengontrol apakah data baru dapat dimasukkan ke partisi yang sudah ada.

Jika diatur ke true, hive.insert-existing-partitions-behavior tidak dapat diatur ke APPEND.

Nilai default adalah false.

hive.insert-existing-partitions-behavior Menentukan perilaku saat memasukkan data ke partisi yang sudah ada. Nilai yang valid:
  • APPEND (default): Tambahkan data ke partisi yang sudah ada.
  • OVERWRITE: Timpa partisi yang sudah ada.
  • ERROR: Larang modifikasi pada partisi yang sudah ada.
hive.create-empty-bucket-files Mengontrol apakah file kosong dibuat untuk bucket kosong. Nilai yang valid:
  • true: Buat file kosong.
  • false (default): Jangan buat file kosong.
hive.max-partitions-per-writers Jumlah maksimum partisi per penulis.

Nilai default adalah 100.

hive.max-partitions-per-scan Jumlah maksimum partisi untuk satu pemindaian tabel.

Nilai default adalah 100.000.

hive.hdfs.authentication.type Menentukan tipe autentikasi HDFS. Nilai yang valid:
  • NONE (default): Mode standar, tanpa autentikasi Kerberos.
  • KERBEROS: Mode aman, dengan autentikasi Kerberos.
hive.hdfs.impersonation.enabled Mengaktifkan impersonasi pengguna HDFS. Nilai yang valid:
  • true: Aktifkan impersonasi pengguna HDFS.
  • false (default): Nonaktifkan impersonasi pengguna HDFS.
hive.hdfs.trino.principal Principal Kerberos yang digunakan Presto untuk menghubungkan ke HDFS.
hive.hdfs.trino.keytab Lokasi file keytab klien HDFS.
hive.dfs.replication Faktor replikasi HDFS.
hive.security Nilai default adalah legacy. Untuk informasi lebih lanjut, lihat Konfigurasi keamanan konektor Hive.
security.config-file Menentukan path ke file konfigurasi yang digunakan saat hive.security=file diatur.
hive.non-managed-table-writes-enabled Mengaktifkan penulisan ke tabel Hive non-managed (eksternal).

Nilai default adalah false.

hive.non-managed-table-creates-enabled Mengaktifkan pembuatan tabel Hive non-managed (eksternal).

Nilai default adalah true.

hive.collect-column-statistics-on-write Mengaktifkan pengumpulan statistik tingkat kolom secara otomatis saat menulis. Untuk informasi lebih lanjut, lihat Statistik tabel.

Nilai default adalah true.

hive.file-status-cache-tables Daftar tabel yang status file-nya akan di-cache.

Misalnya, fruit.apple,fruit.orange hanya meng-cache tabel apple dan orange dalam skema fruit. fruit.*,vegetable.* meng-cache semua tabel dalam skema fruit dan vegetable. * meng-cache semua tabel di semua skema.

hive.file-status-cache-size Jumlah total maksimum entri status file yang di-cache.

Nilai default adalah 1.000.000.

hive.file-status-cache-expire-time Durasi validitas status file yang di-cache.

Nilai default adalah 1m.

hive.rcfile.time-zone Menyesuaikan nilai timestamp yang dikodekan biner ke zona waktu yang ditentukan.

Default-nya adalah zona waktu default JVM.

Catatan Untuk Hive 3.1 dan versi setelahnya, nilai ini harus diatur ke UTC.
hive.timestamp-precision Menentukan presisi untuk kolom timestamp di Hive. Nilai yang valid:
  • MILLISECONDS
  • MICROSECONDS
  • NANOSECONDS

Nilai default adalah MILLISECONDS.

Catatan Nilai dengan presisi lebih tinggi daripada nilai yang dikonfigurasi akan dibulatkan.
hive.temporary-staging-directory-enabled Mengontrol apakah direktori staging sementara yang dikonfigurasi di hive.temporary-staging-directory-path digunakan untuk operasi tulis. Direktori staging sementara tidak digunakan saat menulis ke OSS, HDFS terenkripsi, atau tabel unsorted di lokasi eksternal. Saat menulis ke tabel sorted, path ini digunakan untuk menampung file sementara selama operasi sorting. Jika dinonaktifkan, penyimpanan target digunakan untuk staging saat menulis ke tabel sorted, yang bisa menjadi tidak efisien untuk penyimpanan objek.

Nilai default adalah true.

hive.temporary-staging-directory-path Menentukan lokasi direktori staging sementara untuk operasi tulis.
Nilai default adalah /tmp/presto-${USER}.
Catatan Placeholder ${USER} dapat digunakan untuk menetapkan lokasi berbeda untuk setiap pengguna.
hive.translate-hive-views Mengaktifkan translasi tampilan Hive.

Nilai default adalah false.

hive.legacy-hive-view-translation Menggunakan algoritma legacy untuk menerjemahkan tampilan Hive. Properti session katalog legacy_hive_view_translation dapat digunakan untuk katalog tertentu.

Nilai default adalah false.

hive.parallel-partitioned-bucketed-writes Meningkatkan paralelisme tulis untuk tabel yang dipartisi dan dibucket.

Nilai default adalah true.

Catatan Jika properti ini dinonaktifkan, jumlah thread penulis dibatasi sesuai jumlah bucket.

Properti konfigurasi format ORC

Properti berikut mengontrol cara konektor Hive membaca dan menulis file ORC.
Parameter Deskripsi
hive.orc.time-zone Menetapkan zona waktu default untuk file ORC lama yang tidak mendeklarasikan zona waktu.

Default-nya adalah zona waktu default JVM.

hive.orc.use-columns-names Mengontrol apakah kolom ORC diakses berdasarkan nama.

Secara default, kolom dalam file ORC diakses berdasarkan posisi ordinalnya dalam definisi tabel Hive. Perilaku ini juga dapat dikontrol dengan properti orc_use_column_names sesi katalog.

Nilai default adalah false.

Properti konfigurasi format Parquet

Properti berikut mengontrol cara konektor Hive membaca dan menulis file Parquet.
Parameter Deskripsi
hive.parquet.time-zone Menyesuaikan nilai timestamp ke zona waktu yang ditentukan.

Default-nya adalah zona waktu default JVM.

Catatan Untuk Hive 3.1 dan versi setelahnya, nilai ini harus diatur ke UTC.
hive.parquet.use-columns-names Mengontrol cara kolom Parquet diakses. Nilai yang valid:
  • true (default): Akses kolom Parquet berdasarkan nama. Urutan kolom tidak perlu sesuai dengan file.
  • false: Akses kolom Parquet berdasarkan posisi ordinalnya dalam definisi tabel Hive.
Perilaku ini juga dapat dikontrol dengan properti session katalog parquet_use_column_names.

Properti konfigurasi metastore

Properti berikut mengonfigurasi Hive metastore. Untuk properti tambahan yang mengatur Thrift, lihat Properti konfigurasi metastore Thrift.
Parameter Deskripsi
hive.metastore Menentukan jenis Hive metastore yang digunakan. Presto mendukung Hive Thrift metastore default (thrift) dan turunannya.

Nilai default adalah thrift.

hive.metastore-cache-ttl Menentukan durasi validitas data metastore dalam cache Hive metastore.

Nilai default adalah 0s.

hive.metastore-cache-maximum-size Jumlah maksimum objek data metastore yang di-cache.

Nilai default adalah 10000.

hive.metastore-refresh-interval Menentukan seberapa sering data metastore yang di-cache diperbarui secara asinkron setelah diakses. Jika data yang di-cache sudah usang tetapi belum kedaluwarsa, akses berikutnya dapat melihat data yang telah diperbarui.
hive.metastore-refresh-max-threads Jumlah maksimum thread yang digunakan untuk merefresh cache metastore.

Nilai default adalah 10.

hive.metastore-timeout Timeout untuk permintaan Hive metastore.

Nilai default adalah 10s.

Properti konfigurasi metastore Thrift

Tabel berikut menjelaskan properti konfigurasi metastore Thrift untuk konektor Hive.
Parameter Deskripsi
hive.metastore.uri URI untuk menghubungkan ke Hive metastore menggunakan protokol Thrift.

Jika Anda memberikan beberapa URI, URI pertama digunakan secara default, dan URI lainnya digunakan sebagai metastore cadangan. Properti ini wajib diisi. Contoh: thrift://192.0.**.**:9083 atau thrift://192.0.**.**:9083,thrift://192.0.**.**:9083.

hive.metastore.username Username yang digunakan Presto untuk mengakses Hive metastore.
hive.metastore.authentication.type Menentukan tipe autentikasi Hive metastore. Nilai yang valid:
  • NONE (default): Mode standar, tanpa autentikasi Kerberos.
  • KERBEROS: Mode aman, dengan autentikasi Kerberos.
hive.metastore.thrift.impersonation.enabled Mengaktifkan impersonasi pengguna Hive metastore.
hive.metastore.thrift.delegation-token.cache-ttl Waktu kedaluwarsa untuk cache token delegasi metastore.

Nilai default adalah 1h.

hive.metastore.thrift.delegation-token.cache-maximum-size Ukuran maksimum cache token delegasi.

Nilai default adalah 1000.

hive.metastore.thrift.client.ssl.enabled Mengaktifkan atau menonaktifkan SSL saat menghubungkan ke metastore. Nilai yang valid:
  • true: Gunakan SSL untuk menghubungkan ke metastore.
  • false (default): Jangan gunakan SSL untuk menghubungkan ke metastore.
hive.metastore.thrift.client.ssl.key Path ke kunci privat dan sertifikat klien (keystore).
hive.metastore.thrift.client.ssl.key-password Password untuk kunci privat.
hive.metastore.thrift.client.ssl.trust-certificate Path ke rantai sertifikat server (truststore).
Catatan Properti ini wajib diisi saat SSL diaktifkan.
hive.metastore.thrift.client.ssl.trust-certificate-password Password untuk rantai sertifikat server.
hive.metastore.service.principal Principal Kerberos untuk layanan Hive metastore.
hive.metastore.client.principal Principal Kerberos yang digunakan Presto untuk menghubungkan ke layanan Hive metastore.
hive.metastore.client.keytab Lokasi file keytab klien Hive metastore.

Properti tuning performa

Tabel berikut menjelaskan properti tuning performa untuk konektor Hive.
Penting Mengubah properti-properti ini dari nilai default-nya dapat menyebabkan ketidakstabilan dan degradasi performa. Lakukan dengan hati-hati.
Parameter Deskripsi
hive.max-outstanding-splits Jumlah target split yang dibuffer per pemindaian tabel dalam kueri sebelum penjadwal menghentikan sementara proses discovery.

Nilai default adalah 1000.

hive.max-splits-per-second Jumlah maksimum split yang dihasilkan per detik untuk setiap pemindaian tabel. Pengaturan ini dapat mengurangi beban pada sistem penyimpanan. Secara default, tidak ada batasan, dan Presto memaksimalkan paralelisme akses data.
hive.max-initial-splits Untuk setiap pemindaian tabel, koordinator mengalokasikan sejumlah split awal, hingga batas ini. Split awal berukuran hingga max-initial-split-size. Split berikutnya berukuran hingga max-split-size.

Nilai default adalah 200.

hive.max-initial-split-size Ukuran setiap split awal, digunakan hingga jumlah split mencapai max-initial-splits. Split yang lebih kecil meningkatkan paralelisme dan dapat mempercepat kueri kecil.

Nilai default adalah 32MB.

hive.max-split-size Ukuran maksimum satu split yang dialokasikan ke worker. Split yang lebih kecil menghasilkan paralelisme lebih tinggi, yang dapat mengurangi latensi tetapi juga meningkatkan overhead dan beban sistem.

Nilai default adalah 64MB.

Statistik tabel

Konektor Hive mendukung pengumpulan dan pengelolaan statistik tabel untuk meningkatkan performa kueri.

Secara default, saat Anda menulis data, konektor Hive mengumpulkan statistik tabel dasar (seperti jumlah file, jumlah baris, dan ukuran data) serta statistik tingkat kolom seperti yang ditunjukkan dalam tabel berikut.
Tipe kolom Statistik yang dikumpulkan
TINYINT Jumlah null, jumlah nilai unik, nilai min/maks
SMALLINT Jumlah null, jumlah nilai unik, nilai min/maks
INTEGER Jumlah null, jumlah nilai unik, nilai min/maks
BIGINT Jumlah null, jumlah nilai unik, nilai min/maks
DOUBLE Jumlah null, jumlah nilai unik, nilai min/maks
REAL Jumlah null, jumlah nilai unik, nilai min/maks
DECIMAL Jumlah null, jumlah nilai unik, nilai min/maks
DATE Jumlah null, jumlah nilai unik, nilai min/maks
TIMESTAMP Jumlah null, jumlah nilai unik, nilai min/maks
VARCHAR Jumlah null, jumlah nilai unik
CHAR Jumlah null, jumlah nilai unik
VARBINARY Jumlah null
BOOLEAN Jumlah null, jumlah nilai true/false