Transaksi dengan semantik ACID didukung oleh metastore Apache Hive di Dataproc Metastore. Untuk mengetahui informasi selengkapnya, lihat Transaksi Hive. Transaksi ini diaktifkan secara default di Hive 3.
Konfigurasi
Anda harus menetapkan konfigurasi sisi server dan klien untuk mengaktifkan dukungan transaksi.
Konfigurasi sisi server
Konfigurasi sisi server berikut ditetapkan secara default selama pembuatan layanan oleh Dataproc Metastore. Anda dapat memilih untuk mengganti konfigurasi ini dengan memasukkan penggantian Kunci dan Nilai di bagian Penggantian konfigurasi metastore.
metastore.compactor.initiator.on— Apakah akan menjalankan thread inisiator dan pembersih di layanan Dataproc Metastore.Tetapkan ke
trueuntuk mengaktifkan inisiator.metastore.compactor.worker.threads— Jumlah thread pekerja pemadatan yang akan dijalankan di Dataproc Metastore.Tetapkan ke angka positif untuk mengaktifkan pemadatan. Menetapkan nilai ini ke angka yang lebih tinggi dapat memengaruhi performa layanan, terutama jika Anda menggunakan tingkat Developer. Jika angka ini perlu disesuaikan, sebaiknya gunakan nilai yang lebih rendah, seperti 8.
hive.metastore.event.db.notification.api.auth— Apakah layanan Dataproc Metastore harus mengotorisasi terhadap API terkait notifikasi database.Tetapkan ke
false. Jika ditetapkan ketrue, hanya superuser dalam setelan proxy yang memiliki izin. Lihat Keamanan API notifikasi metastore untuk mengetahui informasi selengkapnya tentang hak istimewa proxy superuser.
Konfigurasi sisi klien
Konfigurasi sisi klien ditetapkan di klien Hive seperti yang dijelaskan dalam Memvalidasi transaksi.
hive.support.concurrency— Tetapkan ketrueuntuk mendukung transaksi penyisipan, pembaruan, dan penghapusan.hive.exec.dynamic.partition.mode— Dalam mode ketat, Anda harus menentukan setidaknya satu partisi statis jika semua partisi tidak sengaja ditimpa. Dalam mode tidak ketat, semua partisi diizinkan bersifat dinamis.Tetapkan ke
nonstrictuntuk mendukung transaksi penyisipan, pembaruan, dan penghapusan.hive.txn.manager— Tetapkan keorg.apache.hadoop.hive.ql.lockmgr.DbTxnManager.
Memvalidasi transaksi
Anda dapat memvalidasi transaksi Hive menggunakan cluster Managed Service untuk Apache Spark yang menggunakan layanan Dataproc Metastore di Hive 3.
Anda harus membuat cluster Managed Service untuk Apache Spark di project yang sama dengan layanan Dataproc Metastore dan dengan Hive 3. Image Managed Service untuk Apache Spark 2.0, 2.0-ubuntu18, dan 2.0-debian10 mendukung Hive 3 dan transaksi. Anda dapat menggunakan flag --image-version untuk menetapkan image 2.0. Contoh:
gcloud dataproc clusters create DATAPROC_CLUSTER_ID \
--dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \
--region=REGION \
--image-version 2.0-debian10
Petunjuk berikut menunjukkan cara memvalidasi transaksi di layanan Dataproc Metastore yang digunakan oleh cluster Managed Service untuk Apache Spark.
SSH ke cluster Managed Service untuk Apache Spark. Anda dapat melakukannya dari browser atau dari command line.
Jalankan perintah
hiveuntuk membuka klien Hive:$> hiveSiapkan konfigurasi sisi klien untuk mengaktifkan dukungan ACID Hive untuk transaksi di sesi klien Hive:
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; SET hive.support.concurrency=true; SET hive.exec.dynamic.partition.mode=nonstrict;Buat tabel transaksional untuk menyisipkan dan memperbarui. Berikut adalah contohnya.
Buat tabel transaksi:
create table student (id int, name string, age int) STORED AS ORC TBLPROPERTIES ('transactional' = 'true');Periksa apakah tabel bersifat transaksional:
describe formatted <tableName>;Daftar properti tabel akan dicetak. Tabel transaksional memiliki
transactional=truedi parameter tabelnya.Sisipkan data ke dalam tabel:
INSERT INTO student VALUES (1, 'Alice', 10), (2, 'Bob', 10), (3, 'Charlie', 10);- Amati folder delta yang dibuat di direktori
studentdi direktori warehouse layanan. Beberapa folder delta dibuat jika Anda menjalankan beberapa pernyataan penyisipan atau pembaruan.
- Amati folder delta yang dibuat di direktori
Lihat pemadatan yang sedang berjalan dan statusnya. Metastore Hive menjalankan thread yang disebut inisiator setiap lima menit untuk memeriksa tabel yang akan dipadatkan dan meminta pemadatan untuk tabel tersebut.
show compactions;Untuk memulai pemadatan manual (kecil atau besar):
ALTER TABLE student COMPACT 'minor'; ALTER TABLE student COMPACT 'major'; ```