Dataproc Metastore 中的 Apache Hive 中繼資料存放區支援 ACID 語意交易。詳情請參閱「Hive 交易」。Hive 3 預設會啟用這些交易。
設定
您必須設定伺服器和用戶端,才能啟用交易支援。
伺服器端設定
Dataproc Metastore 建立服務時,預設會設定下列伺服器端設定。如要覆寫這些設定,請在「Metastore config overrides」下方輸入「Key」和「Value」覆寫。
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 服務相同的專案中建立 Dataproc 叢集,並使用 Hive 3。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';