Le transazioni con semantica ACID sono supportate dai metastore Apache Hive in Dataproc Metastore. Per ulteriori informazioni, consulta la sezione Transazioni Hive. Queste transazioni sono abilitate per impostazione predefinita su Hive 3.
Configurazioni
Devi impostare configurazioni lato server e lato client per abilitare il supporto delle transazioni.
Configurazioni lato server
Le seguenti configurazioni lato server sono impostate per impostazione predefinita durante la creazione del servizio da Dataproc Metastore. Puoi scegliere di eseguire l'override di questi valori inserendo gli override di Chiave e Valore in Override della configurazione di Metastore.
metastore.compactor.initiator.on
: indica se eseguire l'iniziatore e i thread più chiari sul servizio Dataproc Metastore.Imposta su
true
per abilitare l'iniziatore.metastore.compactor.worker.threads
: il numero di thread di worker del compattatore da eseguire su Dataproc Metastore.Imposta un numero positivo per abilitare il compattatore. L'impostazione di un numero maggiore potrebbe influire sulle prestazioni del servizio, soprattutto se ti trovi al livello sviluppatore. Se è necessario modificare questo numero, 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 correlate alle notifiche del database.Impostato su
false
. Se il criterio viene impostato sutrue
, solo i super user nelle impostazioni proxy dispongono dell'autorizzazione. Consulta Sicurezza dell'API di notifica Metastore per ulteriori informazioni sul privilegio proxy super user.
Configurazioni lato client
Le configurazioni lato client vengono impostate nel client Hive come descritto in Convalidare le transazioni.
hive.support.concurrency
: imposta sutrue
per supportare l'inserimento, l'aggiornamento e l'eliminazione delle transazioni.hive.exec.dynamic.partition.mode
: in modalità Strict, 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.Impostala su
nonstrict
per supportare l'inserimento, l'aggiornamento e l'eliminazione delle transazioni.hive.txn.manager
: imposta suorg.apache.hadoop.hive.ql.lockmgr.DbTxnManager
.
Convalidare le 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
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 seguenti mostrano come convalidare le transazioni nel servizio Dataproc Metastore utilizzato da un cluster Dataproc.
SSH nel cluster Dataproc. Puoi eseguire questa operazione da un browser o dalla riga di comando.
Esegui il comando
hive
per aprire il client Hive:$> hive
Imposta le configurazioni lato client per abilitare il supporto di Hive ACID per le 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 in cui inserire e aggiornare. Di seguito è riportato un esempio.
Creare 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 servizio. Vengono create più cartelle delta se esegui più istruzioni di inserimento o aggiornamento.
- Osserva la cartella delta creata nella directory
Visualizza quali compattazioni sono in esecuzione e i relativi stati. Il metastore Hive esegue un thread chiamato iniziatore ogni cinque minuti per controllare le tabelle dovute alla compattazione e richiede la compattazione per queste tabelle.
show compactions;
Per avviare una compattazione manuale (minore o maggiore):
ALTER TABLE student COMPACT 'minor'; ALTER TABLE student COMPACT 'major';