Le transazioni con semantica ACID sono supportate da Apache Hive in Dataproc Metastore. Per ulteriori informazioni, consulta Transazioni Hive. Queste transazioni sono attive per impostazione predefinita su Hive 3.
Configurazioni
Devi impostare le configurazioni lato server e client per attivare delle transazioni.
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 l'iniziatore e a rendere più puliti i thread sul 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 compattatore. Impostando un valore superiore potrebbe influire sulle prestazioni del servizio, soprattutto se utilizzi 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.Impostato su
false
. Se il valore è impostato sutrue
, verranno utilizzati solo i super user nel proxy impostazioni 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 Convalida le transazioni.
hive.support.concurrency
: imposta sutrue
per supportare l'inserimento, aggiornare ed eliminare le transazioni.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 rigida, tutte le partizioni possono essere dinamiche.Impostalo su
nonstrict
per supportare l'inserimento, l'aggiornamento e l'eliminazione delle transazioni.hive.txn.manager
: valore 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 cluster
servizio Dataproc Metastore e con Hive 3. Dataproc
2.0, 2.0-ubuntu18 e 2.0-debian10, supportano Hive 3 e le transazioni. Tu
puoi usare 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
Imposta le configurazioni lato client per attivare il supporto di ACID Hive per transazioni nella sessione 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 da inserire e aggiornare. 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);
- Osserva la cartella delta creata nella directory
student
nella directory del magazzino del servizio. Vengono create più cartelle delta se esegui più istruzioni di inserimento o aggiornamento.
- Osserva la cartella delta creata nella directory
Visualizza le compattazioni in esecuzione e il relativo stato. 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';