Menggunakan tabel transaksional dengan Dataproc Metastore

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 klien dan server untuk mengaktifkan dukungan transaksi.

Konfigurasi sisi server

Konfigurasi sisi server berikut ditetapkan secara default selama pembuatan layanan oleh Dataproc Metastore. Anda dapat memilih untuk menggantinya dengan memasukkan penggantian Kunci dan Nilai di bagian Penggantian konfigurasi Metastore.

  • metastore.compactor.initiator.on — Apakah akan menjalankan thread inisiator dan yang lebih bersih di layanan Dataproc Metastore atau tidak.

    Tetapkan ke true untuk mengaktifkan inisiator.

  • metastore.compactor.worker.threads — Jumlah thread pekerja pemadat yang akan dijalankan di Metastore Dataproc.

    Tetapkan ke angka positif untuk mengaktifkan pemadat. Menetapkan nilai ini ke jumlah yang lebih tinggi dapat memengaruhi performa layanan, terutama jika Anda berada di 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 melakukan otorisasi terhadap API terkait notifikasi database atau tidak.

    Tetapkan ke false. Jika disetel ke true, hanya superuser dalam setelan proxy yang memiliki izin. Lihat Keamanan API notifikasi Metastore untuk informasi selengkapnya tentang hak istimewa proxy superuser.

Konfigurasi sisi klien

Konfigurasi sisi klien ditetapkan pada klien Hive seperti yang dijelaskan dalam bagian Memvalidasi transaksi.

  • hive.support.concurrency — Tetapkan ke true untuk 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 untuk dinamis.

    Tetapkan ke nonstrict untuk mendukung transaksi penyisipan, pembaruan, dan penghapusan.

  • hive.txn.manager — Tetapkan ke org.apache.hadoop.hive.ql.lockmgr.DbTxnManager.

Memvalidasi transaksi

Anda dapat memvalidasi transaksi Hive menggunakan cluster Dataproc yang menggunakan layanan Dataproc Metastore di Hive 3.

Anda harus membuat cluster Dataproc dalam project yang sama dengan layanan Dataproc Metastore dan dengan Hive 3. Gambar Dataproc 2.0, 2.0-ubuntu18 dan 2.0-debian10, mendukung Hive 3 dan transaksi. Anda dapat menggunakan flag --image-version untuk menetapkan gambar 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 Anda yang digunakan oleh cluster Dataproc.

  1. SSH ke cluster Dataproc. Anda dapat melakukan ini dari browser atau baris perintah.

  2. Jalankan perintah hive untuk membuka klien Hive:

    $> hive
    
  3. Siapkan 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;
    
  4. Buat tabel transaksional untuk disisipkan dan diperbarui. Berikut adalah contohnya.

    1. Buat tabel transaksi:

      create table student (id int, name string, age int)
      STORED AS ORC TBLPROPERTIES ('transactional' = 'true');
      
    2. Periksa apakah tabel tersebut transaksional:

      describe formatted <tableName>;
      

      Daftar properti tabel akan dicetak. Tabel transaksi memiliki transactional=true dalam parameter tabelnya.

    3. Sisipkan data ke dalam tabel:

      INSERT INTO student VALUES
      (1, 'Alice', 10),
      (2, 'Bob', 10),
      (3, 'Charlie', 10);
      
      1. Amati folder delta yang dibuat dalam direktori student di direktori warehouse layanan. Beberapa folder delta akan dibuat jika Anda menjalankan beberapa pernyataan penyisipan atau pembaruan.
    4. Lihat pemadatan mana yang sedang berjalan dan statusnya. Metastore Hive menjalankan thread yang disebut inisiator setiap lima menit untuk memeriksa tabel yang perlu pemadatan dan meminta pemadatan tabel tersebut.

      show compactions;
      
      1. Untuk memulai pemadatan manual (baik kecil maupun besar):

          ALTER TABLE student COMPACT 'minor';
          ALTER TABLE student COMPACT 'major';
        

Langkah selanjutnya