Gunakan konektor Hive untuk menanyakan dan menganalisis data di gudang data Hive.
Informasi latar belakang
Sistem gudang data Hive terdiri dari bagian-bagian berikut:
File data tersedia dalam berbagai format. Umumnya, file data disimpan di Sistem File Terdistribusi Hadoop (HDFS) atau sistem penyimpanan objek seperti Alibaba Cloud Object Storage Service (OSS).
Metadata yang menjelaskan cara pemetaan file data ke skema dan tabel disimpan dalam database seperti MySQL. Anda dapat mengakses metadata tersebut menggunakan Hive metastore.
HiveQL adalah bahasa query yang dieksekusi pada kerangka komputasi terdistribusi, seperti MapReduce atau Tez.
Topik ini menjelaskan informasi terkait konektor Hive berikut:
Prasyarat
Sebuah kluster DataLake atau Hadoop telah dibuat dengan layanan Presto dipilih. Untuk detail lebih lanjut, lihat Buat Kluster.
Batasan
Untuk mengonfigurasi konektor Hive, Anda perlu terlebih dahulu mengonfigurasi Hive metastore.
Konektor Hive mendukung berbagai sistem penyimpanan terdistribusi, seperti HDFS, Alibaba Cloud OSS, dan sistem yang kompatibel dengan OSS. Anda dapat menggunakan konektor Hive untuk mengakses data dari sistem penyimpanan tersebut. Pastikan bahwa node koordinator dan semua node pekerja Presto dapat mengakses Hive metastore yang telah dikonfigurasi serta sistem penyimpanan terdistribusi yang ingin diakses datanya. Secara default, protokol Thrift dapat digunakan untuk mengakses Hive metastore melalui port 9083.
Ubah konfigurasi konektor Hive
Bagian ini menjelaskan cara mengubah konfigurasi konektor Hive. Untuk informasi lebih lanjut, lihat Konfigurasikan Konektor.
Konfigurasi default konektor Hive
Buka halaman layanan Presto di konsol EMR, klik tab Configure, lalu pilih tab hive.properties. Parameter yang dijelaskan dalam tabel berikut akan ditampilkan. Sesuaikan parameter tersebut sesuai dengan kebutuhan bisnis Anda.
Parameter | Deskripsi |
hive.recursive-directories | Menentukan apakah data dapat dibaca dari subdirektori untuk sebuah tabel atau partisi. Parameter ini mirip dengan properti |
hive.metastore.uri | Uniform resource identifier (URI) yang digunakan untuk mengakses Hive metastore berdasarkan protokol Thrift. Secara default, parameter ini diatur ke nilai dalam format |
hive.config.resources | File konfigurasi HDFS. Jika Anda ingin menentukan beberapa file konfigurasi, pisahkan nama file dengan koma (,). Pastikan bahwa file konfigurasi ada di semua host tempat Presto berjalan. Penting Tetapkan parameter ini hanya jika Anda perlu mengakses HDFS. |
hive.delta-table-enabled | Menentukan apakah Presto dapat membaca data dari tabel Delta Lake. Nilai valid:
|
hive.delta-compatible-mode-enabled | Menentukan apakah mode kompatibilitas diaktifkan untuk tabel Delta Lake. Nilai valid:
|
hive.hdfs.impersonation.enabled | Menentukan apakah akan mengaktifkan peniruan pengguna. Nilai valid:
|
Konfigurasi untuk beberapa kluster Hive
Jika Anda memiliki beberapa kluster Hive, buatlah beberapa file konfigurasi di direktori etc/catalog. Pastikan ekstensi nama file adalah .properties.
Sebagai contoh, jika Anda membuat file konfigurasi bernama sales.properties, Presto akan menggunakan konektor yang dikonfigurasi dalam file tersebut untuk membuat katalog bernama sales.
Konfigurasi HDFS
Dalam banyak kasus, klien HDFS secara otomatis dikonfigurasi untuk Presto, sehingga Anda tidak perlu menentukan file konfigurasi. Namun, dalam skenario tertentu, Anda harus menentukan klien HDFS jika ingin mengakses kluster HDFS. Sebagai contoh, jika Anda mengaktifkan federasi HDFS atau menyebarkan NameNode dalam mode high-availability, Anda perlu menambahkan properti hive.config.resources untuk merujuk ke file konfigurasi HDFS yang diperlukan.
Kami menyarankan Anda untuk menentukan file konfigurasi hanya jika diperlukan. Dengan demikian, jumlah file konfigurasi dapat dikurangi, serta jumlah properti yang termasuk diminimalkan, sehingga mengurangi kemungkinan terjadinya ketidakcocokan properti.
Pastikan file konfigurasi tersedia di semua host tempat Presto berjalan. Jika Anda ingin merujuk ke file konfigurasi Hadoop yang sudah ada, pastikan file tersebut disalin ke semua node Presto di mana Hadoop tidak berjalan.
Nama pengguna HDFS dan izin
Sebelum mengeksekusi pernyataan CREATE TABLE atau CREATE TABLE AS di Presto untuk membuat tabel Hive, pastikan akun yang digunakan untuk mengakses HDFS dari Presto memiliki izin untuk mengakses direktori gudang Hive. Direktori gudang Hive ditentukan oleh variabel konfigurasi hive.metastore.warehouse.dir dalam file hive-site.xml, dengan nilai default /user/hive/warehouse.
Tipe file yang didukung
Konektor Hive mendukung tipe file yang dijelaskan pada tabel berikut.
Tipe file | Catatan |
ORC | Tidak tersedia |
Parquet | Tidak tersedia |
Avro | Tidak tersedia |
RCText | Mengacu pada RCFile yang menggunakan kelas |
RCBinary | Mengacu pada RCFile yang menggunakan kelas |
SequenceFile | Tidak tersedia |
JSON | Kelas |
CSV | Kelas |
TextFile | Tidak tersedia |
Tipe tabel yang didukung
Konektor Hive mendukung tipe tabel seperti yang dijelaskan dalam tabel berikut.
Tipe tabel | Deskripsi |
Tabel Atomicity, Consistency, Isolation, Durability (ACID) | Jika metastore Hive versi 3.X digunakan, Anda dapat menggunakan konektor Hive untuk membaca data dari atau menulis data ke tabel insert-only dan ACID. Dalam hal ini, partisi dan bucketing sepenuhnya didukung. Anda dapat melakukan operasi DELETE dan UPDATE tingkat baris pada tabel ACID. Anda tidak diizinkan melakukan operasi UPDATE pada kolom kunci partisi atau kolom bucket atau menggunakan Hive Streaming Ingest untuk membuat tabel ACID. Untuk informasi lebih lanjut, lihat Streaming Data Ingest. |
Tampilan materialized | Anda dapat menggunakan konektor Hive untuk membaca data dari tampilan materialized Hive. Di Presto, tampilan materialized disajikan sebagai tabel biasa yang hanya bisa dibaca. |
Tampilan Hive
Tampilan Hive didefinisikan dalam HiveQL dan disimpan di Hive metastore.
Konektor Hive mendukung tampilan Hive dalam tiga mode: Disabled, Legacy, dan Experimental.
Mode | Deskripsi |
Disabled | Dalam mode ini, logika bisnis dan data yang dikodekan dalam tampilan tidak terlihat di Presto. Tampilan Hive diabaikan secara default. |
Legacy | Dalam mode ini, tampilan Hive sederhana, dan Anda dapat membaca data di Presto. Untuk mengaktifkan mode ini, Anda dapat menentukan Jika Anda ingin sementara waktu mengaktifkan mode akses tradisional ini untuk katalog tertentu, Anda dapat mengatur properti sesi katalog HiveQL mirip dengan SQL. Query HiveQL yang mendefinisikan tampilan diinterpretasikan seolah-olah query tersebut ditulis dalam SQL. Tidak diperlukan terjemahan. Mode ini cocok untuk tampilan Hive sederhana tetapi dapat menyebabkan masalah untuk query kompleks. Sebagai contoh, jika fungsi HiveQL memiliki tanda tangan yang sama dengan SQL tetapi memiliki perilaku berbeda, hasil yang dikembalikan mungkin berbeda. Dalam skenario ekstrem, query mungkin gagal atau mungkin tidak diurai dan dieksekusi. |
Experimental | Dalam mode ini, Anda dapat menganalisis, memproses, dan menulis ulang tampilan Hive, termasuk ekspresi dan pernyataan yang terkandung dalam tampilan tersebut. Untuk mengaktifkan mode ini, Anda dapat menentukan Jika Anda menggunakan mode ini, fitur-fitur berikut tidak didukung:
|
Properti konfigurasi
Properti konfigurasi Hive
Konektor Hive mendukung percepatan query berbasis JindoTable. Setiap kluster EMR dilengkapi dengan dua konektor Hive bawaan, yaitu hive.properties dan hive-acc.properties. Mesin asli JindoTable terintegrasi dalam konektor hive-acc.properties dan mempercepat query file ORC atau Parquet. Untuk detail lebih lanjut mengenai percepatan query berbasis JindoTable, lihat topik terkait untuk versi SmartData Anda. Sebagai contoh, jika Anda menggunakan SmartData 3.6.X, lihat Aktifkan percepatan query berbasis mesin asli.
Tabel berikut menjelaskan properti konfigurasi untuk konektor Hive.
Properti | Deskripsi |
hive.config.resources | File konfigurasi HDFS. Jika Anda ingin menentukan beberapa file konfigurasi, pisahkan nama file dengan koma (,). Pastikan bahwa file konfigurasi ada di semua host tempat Presto berjalan. Catatan Konfigurasikan properti ini hanya jika Anda perlu mengakses HDFS. |
hive.recursive-directories | Menentukan apakah data dapat dibaca dari subdirektori untuk sebuah tabel atau partisi. Properti ini mirip dengan properti |
hive.ignore-absent-partitions | Menentukan apakah akan mengabaikan partisi daripada melaporkan kegagalan query jika jalur file sistem yang ditentukan untuk partisi tidak ada. Jika partisi diabaikan, beberapa data dalam tabel mungkin dilewati. Nilai default: false. |
hive.storage-format | Format file default yang digunakan saat Anda membuat tabel. Nilai default: ORC. |
hive.compression-codec | Metode pengkodean file yang digunakan saat Anda menulis data ke file. Nilai valid: NONE, SNAPPY, LZ4, ZSTD, dan GZIP. Nilai default: GZIP. |
hive.force-local-scheduling | Menentukan apakah secara paksa menjadwalkan split pada node tempat proses DataNode Hadoop memproses data split. Ini meningkatkan efisiensi instalasi dalam skenario di mana Presto berlokasi bersama setiap DataNode. Nilai default: false. |
hive.respect-table-format | Menentukan apakah data di partisi baru ditulis dalam format tabel yang ada atau format default Presto. Nilai valid:
|
hive.immutable-partitions | Menentukan apakah data baru dapat dimasukkan ke dalam partisi yang ada. Jika Anda mengatur properti ini ke true, properti Nilai default: false. |
hive.insert-existing-partitions-behavior | Mode di mana data dimasukkan ke dalam partisi yang ada. Nilai valid:
|
hive.create-empty-bucket-files | Menentukan apakah akan membuat file kosong untuk bucket yang tidak menyimpan data. Nilai valid:
|
hive.max-partitions-per-writers | Jumlah maksimum partisi per penulis. Nilai default: 100. |
hive.max-partitions-per-scan | Jumlah maksimum partisi untuk pemindaian tabel tunggal. Nilai default: 100000. |
hive.hdfs.authentication.type | Mode otentikasi HDFS. Nilai valid:
|
hive.hdfs.impersonation.enabled | Menentukan apakah akan mengaktifkan peniruan pengguna HDFS. Nilai valid:
|
hive.hdfs.trino.principal | Principal Kerberos yang digunakan saat Presto terhubung ke HDFS. |
hive.hdfs.trino.keytab | Jalur file kunci untuk klien HDFS. |
hive.dfs.replication | Faktor replikasi HDFS. |
hive.security | Properti keamanan. Nilai default: legacy. Untuk informasi lebih lanjut, lihat Konfigurasi keamanan konektor Hive. |
security.config-file | Jalur file konfigurasi. Properti ini diperlukan jika Anda mengatur properti |
hive.non-managed-table-writes-enabled | Menentukan apakah akan mengaktifkan penulisan data ke tabel Hive yang tidak dikelola (eksternal). Nilai default: false. |
hive.non-managed-table-creates-enabled | Menentukan apakah akan mengaktifkan pembuatan tabel Hive yang tidak dikelola (eksternal). Nilai default: true. |
hive.collect-column-statistics-on-write | Menentukan apakah akan mengaktifkan pengumpulan statistik tingkat kolom secara otomatis selama penulisan data. Untuk informasi lebih lanjut, lihat Properti konfigurasi. Nilai default: true. |
hive.file-status-cache-tables | Menentukan tabel yang di-cache. Sebagai contoh, |
hive.file-status-cache-size | Jumlah maksimum entri status file yang di-cache. Nilai default: 1000000. |
hive.file-status-cache-expire-time | Periode validitas daftar direktori yang di-cache. Nilai default: 1. Unit: menit. |
hive.rcfile.time-zone | Zona waktu ke mana nilai timestamp yang dikodekan biner disesuaikan. Nilai default: JVM default. Catatan Jika Anda menggunakan Hive 3.1 atau versi yang lebih baru, Anda harus mengatur properti ini ke UTC. |
hive.timestamp-precision | Precision kolom Hive bertipe TIMESTAMP. Nilai valid:
Nilai default: MILLISECONDS. Catatan Nilai dengan presisi lebih tinggi dibulatkan. |
hive.temporary-staging-directory-enabled | Menentukan apakah akan menggunakan direktori staging sementara yang ditentukan oleh properti Nilai default: true. |
hive.temporary-staging-directory-path | Jalur direktori staging sementara yang digunakan untuk penulisan data. Nilai default: Catatan Anda dapat menggunakan placeholder ${USER} untuk menentukan lokasi unik untuk setiap pengguna. |
hive.translate-hive-views | Menentukan apakah akan mengaktifkan terjemahan untuk tampilan Hive. Nilai default: false. |
hive.legacy-hive-view-translation | Menentukan apakah akan menggunakan algoritma tradisional untuk menerjemahkan tampilan Hive. Anda dapat menentukan properti sesi katalog Nilai default: false. |
hive.parallel-partitioned-bucketed-writes | Menentukan apakah akan meningkatkan paralelisme penulisan data ke tabel yang dipartisi dan tabel yang dibucket. Nilai default: true. Catatan Jika Anda mengatur properti ini ke false, jumlah thread penulisan tidak dapat melebihi jumlah bucket. |
Properti konfigurasi untuk file ORC
Tabel berikut menjelaskan properti yang dikonfigurasi saat menggunakan konektor Hive untuk membaca data dari atau menulis data ke file ORC.
Properti | Deskripsi |
hive.orc.time-zone | Zona waktu default untuk file ORC yang merupakan versi ORC awal dan tidak mendeklarasikan zona waktu. Nilai default: JVM default. |
hive.orc.use-columns-names | Menentukan apakah akan mengakses kolom file ORC berdasarkan nama. Secara default, kolom dalam file ORC diakses berdasarkan posisi urutan mereka dalam definisi tabel Hive. Properti sesi katalog yang setara adalah Nilai default: false. |
Properti konfigurasi untuk file Parquet
Tabel berikut menjelaskan properti yang dikonfigurasi saat menggunakan konektor Hive untuk membaca atau menulis data ke file Parquet.
Properti | Deskripsi |
hive.parquet.time-zone | Zona waktu ke mana nilai timestamp disesuaikan. Nilai default: JVM default. Catatan Jika Anda menggunakan Hive 3.1 atau versi yang lebih baru, Anda harus mengatur properti ini ke UTC. |
hive.parquet.use-columns-names | Menentukan apakah akan mengakses kolom file Parquet berdasarkan nama. Nilai valid:
Properti sesi katalog yang setara adalah |
Properti konfigurasi untuk Hive metastore
Tabel berikut menjelaskan properti konfigurasi untuk Hive metastore. Anda dapat menggunakan properti khusus untuk mengonfigurasi Hive metastore yang terhubung melalui protokol Thrift. Untuk informasi lebih lanjut, lihat Properti konfigurasi untuk Hive metastore berbasis Thrift.
Properti | Deskripsi |
hive.metastore | Jenis Hive metastore yang digunakan. Presto mendukung Hive metastore berbasis Thrift default (thrift) dan turunannya. Nilai default: thrift. |
hive.metastore-cache-ttl | Periode validitas data metastore yang di-cache dalam Hive metastore. Nilai default: 0. Unit: detik. |
hive.metastore-cache-maximum-size | Jumlah maksimum objek data metastore yang di-cache dalam Hive metastore. Nilai default: 10000. |
hive.metastore-refresh-interval | Interval di mana data metastore yang di-cache diperbarui secara asinkron setelah operasi akses data. Hanya data yang belum kedaluwarsa yang diperbarui. Fitur pembaruan data memastikan bahwa data terbaru diperoleh dalam akses berikutnya. |
hive.metastore-refresh-max-threads | Jumlah maksimum thread yang digunakan untuk memperbarui data metastore yang di-cache. Nilai default: 10. |
hive.metastore-timeout | Periode timeout permintaan Hive metastore. Nilai default: 10. Unit: detik. |
Properti konfigurasi untuk Hive metastore berbasis Thrift
Tabel berikut menjelaskan properti konfigurasi untuk Hive metastore berbasis Thrift dari konektor Hive.
Properti | Deskripsi |
hive.metastore.uri | URI yang digunakan untuk mengakses Hive metastore berdasarkan protokol Thrift. Jika beberapa URI dikonfigurasi, URI pertama digunakan secara default. Hive metastore yang sesuai dengan URI lainnya dianggap sebagai metastore sekunder. Properti ini diperlukan. Contoh: |
hive.metastore.username | Nama pengguna yang digunakan oleh Presto untuk mengakses Hive metastore. |
hive.metastore.authentication.type | Mode otentikasi Hive metastore. Nilai valid:
|
hive.metastore.thrift.impersonation.enabled | Menentukan apakah akan mengaktifkan peniruan pengguna untuk Hive metastore. |
hive.metastore.thrift.delegation-token.cache-ttl | Periode validitas cache token delegasi untuk Hive metastore. Nilai default: 1. Unit: jam. |
hive.metastore.thrift.delegation-token.cache-maximum-size | Ukuran maksimum cache token delegasi. Nilai default: 1000. |
hive.metastore.thrift.client.ssl.enabled | Menentukan apakah akan mengaktifkan SSL saat Hive metastore terhubung. Nilai valid:
|
hive.metastore.thrift.client.ssl.key | Jalur kunci pribadi dan sertifikat klien di key store. |
hive.metastore.thrift.client.ssl.key-password | Kata sandi kunci pribadi. |
hive.metastore.thrift.client.ssl.trust-certificate | Jalur rantai sertifikat server di trust store. Catatan Properti ini diperlukan saat SSL diaktifkan. |
hive.metastore.thrift.client.ssl.trust-certificate-password | Kata sandi rantai sertifikat server. |
hive.metastore.service.principal | Principal Kerberos Hive metastore. |
hive.metastore.client.principal | Principal Kerberos yang digunakan saat Presto terhubung ke Hive metastore. |
hive.metastore.client.keytab | Jalur file keytab pada klien Hive metastore. |
Properti konfigurasi untuk penyetelan kinerja
Tabel berikut menjelaskan properti konfigurasi untuk penyetelan kinerja konektor Hive.
Jika Anda mengubah pengaturan default properti dalam tabel berikut, kinerja konektor Hive mungkin menjadi tidak stabil atau menurun. Lanjutkan dengan hati-hati.
Properti | Deskripsi |
hive.max-outstanding-splits | Jumlah maksimum split yang di-cache untuk setiap pemindaian tabel dalam query sebelum penjadwal mencoba jeda. Nilai default: 1000. |
hive.max-splits-per-second | Jumlah maksimum split yang dihasilkan per detik dalam setiap pemindaian tabel. Properti ini dapat digunakan untuk mengurangi beban pada sistem penyimpanan. Secara default, tidak ada batasan yang ditentukan, dan Presto memaksimalkan paralelisme akses data. |
hive.max-initial-splits | Jumlah maksimum split awal. Untuk setiap pemindaian tabel, node koordinator pertama-tama menetapkan split awal, masing-masing tidak dapat melebihi nilai max-initial-split-size dalam ukuran. Setelah node koordinator menetapkan split awal, jumlah maksimum split yang dapat terus ditetapkan oleh kode koordinator ditentukan oleh properti max-split-size. Nilai default: 200. |
hive.max-initial-split-size | Ukuran maksimum setiap split yang ditetapkan ke node pekerja jika jumlah split yang telah ditetapkan kurang dari atau sama dengan nilai properti max-initial-splits. Jika ukuran split kecil, paralelisme akses data tinggi. Ini mempercepat kecepatan query kecil. Nilai default: 32. Unit: MB. |
hive.max-split-size | Ukuran maksimum satu split yang ditetapkan ke node pekerja. Jika ukuran split kecil, paralelisme akses data tinggi. Ini mengurangi latensi tetapi meningkatkan overhead dan beban sistem. Nilai default: 64. Unit: MB. |
Statistik tabel
Gunakan konektor Hive untuk mengumpulkan dan mengelola statistik tabel, yang dapat meningkatkan kinerja query.
Saat menggunakan konektor Hive untuk menulis data, konektor mengumpulkan informasi dasar seperti jumlah file, jumlah baris, ukuran data mentah, dan total ukuran data. Konektor juga mengumpulkan statistik tingkat kolom yang dijelaskan dalam tabel berikut.
Tipe kolom | Informasi yang dapat dikumpulkan |
TINYINT | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
SMALLINT | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
INTEGER | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
BIGINT | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
DOUBLE | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
REAL | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
DECIMAL | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
DATE | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
TIMESTAMP | Jumlah nilai null, jumlah nilai unik, dan nilai maksimum atau minimum |
VARCHAR | Jumlah nilai null dan jumlah nilai unik |
CHAR | Jumlah nilai null dan jumlah nilai unik |
VARBINARY | Jumlah nilai null |
BOOLEAN | Jumlah nilai null dan jumlah nilai true atau false |