Le transazioni con semantica ACID sono supportate dai metastore Apache Hive in Dataproc Metastore. Per maggiori informazioni, consulta la sezione Transazioni Hive. Queste transazioni sono attive 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 eseguire l'override di questi valori inserendo i valori di Chiave e Valore in Override della configurazione di Metastore.
metastore.compactor.initiator.on
: indica se eseguire i thread di inizializzazione e pulizia sul servizio Dataproc Metastore.Imposta su
true
per attivare l'iniziatore.metastore.compactor.worker.threads
: il numero di thread worker compattatori da eseguire su Dataproc Metastore.Imposta un numero positivo per attivare il compattatore. Se imposti un numero più alto, le prestazioni del servizio potrebbero risentirne, soprattutto se hai il livello Developer. 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 autorizzare l'accesso alle API relative alle notifiche del database.Imposta su
false
. Se impostato sutrue
, solo i superuser nelle impostazioni del proxy hanno l'autorizzazione. Per saperne di più sul privilegio di proxy superuser, consulta Sicurezza dell'API di notifica di Metastore.
Configurazioni lato client
Le configurazioni lato client vengono impostate nel client Hive come descritto in Convalida delle 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.Imposta 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 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 seguenti istruzioni mostrano come convalidare le transazioni nel servizio Dataproc Metastore utilizzato da un cluster Dataproc.
Connettiti in SSH al cluster Dataproc. 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 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 i dati. 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 ha
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 warehouse 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. Hive Metastore esegue un thread chiamato iniziatore ogni cinque minuti per verificare la presenza di tabelle per le quali è prevista la 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';