Le transazioni con semantica ACID sono supportate dai metastore Apache Hive in Dataproc Metastore. Per ulteriori informazioni, consulta Transazioni Hive. Queste transazioni sono attivate per impostazione predefinita su Hive 3.
Configurazioni
Per attivare il supporto delle transazioni, devi impostare le configurazioni lato server e lato client.
Configurazioni lato server
Le seguenti configurazioni lato server vengono impostate per impostazione predefinita durante la creazione del servizio da parte di Dataproc Metastore. Puoi scegliere di sostituirli inserendo le sostituzioni Chiave e Valore in Sostituzioni della configurazione Metastore.
metastore.compactor.initiator.on
: indica se eseguire i thread di iniziativa e di pulizia nel servizio Dataproc Metastore.Imposta su
true
per attivare l'iniziatore.metastore.compactor.worker.threads
: il numero di thread worker del compattatore da eseguire su Dataproc Metastore.Imposta un numero positivo per attivare il compressore. Se imposti un numero superiore, il rendimento del servizio potrebbe essere compromesso, soprattutto se utilizzi il livello sviluppatore. Se questo numero deve essere modificato, ti consigliamo di utilizzare un valore inferiore, ad esempio 8.
hive.metastore.event.db.notification.api.auth
: indica se il servizio Dataproc Metastore deve eseguire l'autorizzazione per le API relative alle notifiche del database.Imposta su
false
. Se impostato sutrue
, solo i super user nelle impostazioni del proxy dispongono dell'autorizzazione. Per ulteriori informazioni sul privilegio proxy superutente, consulta Sicurezza dell'API di notifica Metastore.
Configurazioni lato client
Le configurazioni lato client vengono impostate nel client Hive come descritto in Convalidare le transazioni.
hive.support.concurrency
: impostato sutrue
per supportare le transazioni di inserimento, aggiornamento ed eliminazione.hive.exec.dynamic.partition.mode
: in modalità rigorosa, devi specificare almeno una partizione statica nel caso in cui tutte le partizioni vengano sovrascritte accidentalmente. In modalità non rigorosa, tutte le partizioni possono essere dinamiche.Impostato su
nonstrict
per supportare le transazioni di inserimento, aggiornamento ed eliminazione.hive.txn.manager
: impostato suorg.apache.hadoop.hive.ql.lockmgr.DbTxnManager
.
Convalida transazioni
Puoi convalidare le transazioni Hive utilizzando un cluster Dataproc che utilizza un servizio Dataproc Metastore su Hive 3.
Devi creare il cluster Dataproc nello stesso progetto del servizio Dataproc Metastore e con Hive 3. Le immagini Dataproc 2.0, 2.0-ubuntu18 e 2.0-debian10 supportano Hive 3 e le transazioni. Puoi scegliere di utilizzare il flag --image-version
per impostare l'immagine 2.0. Ad esempio:
gcloud dataproc clusters create DATAPROC_CLUSTER_ID \
--dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \
--region=REGION \
--image-version 2.0-debian10
Le istruzioni riportate di seguito mostrano come convalidare le transazioni nel servizio Dataproc Metastore utilizzato da un cluster Dataproc.
Accedi al cluster Dataproc tramite SSH. Puoi farlo da un browser o dalla riga di comando.
Esegui il comando
hive
per aprire il client Hive:$> hive
Configura le impostazioni lato client per attivare il supporto ACID di Hive per le transazioni nella sessione del client Hive:
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; SET hive.support.concurrency=true; SET hive.exec.dynamic.partition.mode=nonstrict;
Crea una tabella transazionale in cui eseguire inserimenti e aggiornamenti. Di seguito è riportato un esempio.
Crea una tabella delle transazioni:
create table student (id int, name string, age int) STORED AS ORC TBLPROPERTIES ('transactional' = 'true');
Controlla se la tabella è transazionale:
describe formatted <tableName>;
Viene stampato un elenco delle proprietà della tabella. Una tabella transazionale contiene
transactional=true
nei parametri della tabella.Inserisci i dati nella tabella:
INSERT INTO student VALUES (1, 'Alice', 10), (2, 'Bob', 10), (3, 'Charlie', 10);
- Controlla la cartella delta creata nella directory
student
nella directory del magazzino del servizio. Vengono create più cartelle delta se esegui più istruzioni INSERT o UPDATE.
- Controlla la cartella delta creata nella directory
Visualizza le compattazioni in esecuzione e i relativi stati. Il metastore Hive esegue un thread chiamato initiator ogni cinque minuti per verificare la presenza di tabelle che devono essere compattate e richiede la compattazione di queste tabelle.
show compactions;
Per avviare una compattazione manuale (minore o maggiore):
ALTER TABLE student COMPACT 'minor'; ALTER TABLE student COMPACT 'major';