Dataproc Metastore 中的 Apache Hive 中繼資料可支援具有 ACID 語義的交易。詳情請參閱「Hive 交易」。根據預設,Hive 3 會啟用這類交易。
設定
您必須設定伺服器和用戶端設定,才能啟用交易支援功能。
伺服器端設定
在 Dataproc Metastore 建立服務時,系統會預設設定下列伺服器端設定。您可以選擇覆寫這些值,方法是在「Metastore 設定覆寫值」下方輸入「鍵」和「值」覆寫值。
metastore.compactor.initiator.on
- 是否要在 Dataproc Metastore 服務上執行啟動器和清理器執行緒。設為
true
即可啟用啟動條件。metastore.compactor.worker.threads
- 在 Dataproc Metastore 上執行的壓縮器工作站執行緒數量。設定為正數即可啟用壓縮器。如果將這個值設為較高的數字,可能會影響服務的效能,尤其是如果您使用的是開發人員級別。如果需要調整這個數字,建議使用較低的值,例如 8。
hive.metastore.event.db.notification.api.auth
- Dataproc Metastore 服務是否應針對資料庫通知相關 API 授權。請設為
false
。如果設為true
,則只有 Proxy 設定中的超級使用者才有權限。如要進一步瞭解超級使用者 Proxy 權限,請參閱「Metastore 通知 API 安全性」。
用戶端設定
如「驗證交易」一文所述,用戶端設定會在 Hive 用戶端中設定。
hive.support.concurrency
:設為true
可支援插入、更新和刪除交易。hive.exec.dynamic.partition.mode
:在嚴格模式下,您必須指定至少一個靜態區隔,以防所有區隔遭到意外覆寫。在非嚴格模式中,所有分區皆可為動態分區。將其設為
nonstrict
,即可支援插入、更新和刪除交易。hive.txn.manager
- 設為org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
。
驗證交易
您可以使用在 Hive 3 上使用 Dataproc Metastore 服務的 Dataproc 叢集,驗證 Hive 交易。
您必須在與 Dataproc Metastore 服務相同的專案中,使用 Hive 3 建立 Dataproc 叢集。Dataproc 2.0 映像檔 (2.0-ubuntu18 和 2.0-debian10) 支援 Hive 3 和交易。您可以使用 --image-version
旗標設定 2.0 圖片。例如:
gcloud dataproc clusters create DATAPROC_CLUSTER_ID \
--dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \
--region=REGION \
--image-version 2.0-debian10
以下說明如何驗證 Dataproc 叢集使用的 Dataproc Metastore 服務中的交易。
使用 SSH 連線至 Dataproc 叢集。您可以透過瀏覽器或指令列執行這項操作。
執行
hive
指令,開啟 Hive 用戶端:$> hive
設定用戶端設定,為 Hive 用戶端工作階段中的交易啟用 Hive ACID 支援:
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; SET hive.support.concurrency=true; SET hive.exec.dynamic.partition.mode=nonstrict;
建立要插入及更新的交易資料表。以下是範例。
建立交易表:
create table student (id int, name string, age int) STORED AS ORC TBLPROPERTIES ('transactional' = 'true');
檢查資料表是否為交易資料表:
describe formatted <tableName>;
列印表格屬性清單。交易資料表的資料表參數中含有
transactional=true
。將資料插入資料表:
INSERT INTO student VALUES (1, 'Alice', 10), (2, 'Bob', 10), (3, 'Charlie', 10);
- 請觀察服務倉庫目錄中
student
目錄下方建立的 delta 資料夾。如果執行多個插入或更新陳述式,系統會建立多個差異資料夾。
- 請觀察服務倉庫目錄中
查看正在執行的壓縮作業和其狀態。Hive 中繼存放區每五分鐘執行一個名為啟動子的執行緒,檢查需要壓縮的資料表,並要求壓縮這些資料表。
show compactions;
如要啟動手動壓縮 (無論是次要或主要壓縮),請按照下列步驟操作:
ALTER TABLE student COMPACT 'minor'; ALTER TABLE student COMPACT 'major';