Migrazione da Apache Hive a BigQuery: panoramica

Questo documento mette a confronto le differenze tra Apache Hive e BigQuery e illustra le considerazioni chiave per la migrazione. Per maggiori informazioni su come completare la migrazione, consulta la guida alla migrazione di Apache Hive.

Puoi anche utilizzare la traduzione SQL batch per eseguire la migrazione collettiva degli script SQL o la traduzione SQL interattiva per tradurre query ad hoc. Apache HiveQL è completamente supportato da entrambi i servizi di traduzione SQL.

Funzionalità

Hive e BigQuery sono entrambi sistemi di data warehouse distribuiti. La seguente tabella confronta alcune delle loro funzionalità di alto livello:

Funzionalità Hive BigQuery
Disponibilità Dipende dall'implementazione Uptime mensile>= 99,99%
Quote Dipende dall'implementazione Quote BigQuery
Formato supportato Avro, Parquet, ORC, Testo Avro, Parquet, ORC, CSV, JSON, Google Drive
Archiviazione delle tabelle gestita HDFS Archiviazione in BigQuery nel formato Capacitor
Origini delle tabelle esterne HDFS, HBase Google Cloud Storage, Google Fogli, Bigtable
Transazione Limitato. ACID a livello di partizione Limitato a livello di partizione. Supporta le transazioni con più istruzioni.
Supporto API JDBC, ODBC, Thrift JDBC, ODBC, libreria client con molti linguaggi
Partizionamento Assistenza Colonna unità di tempo, data di importazione o intervallo di interi
Clustering Assistenza Assistenza
Replica Dipende da HDFS. Nessuna riproduzione tra data center Repliche tra data center affidabili gestite da Google
funzione definita dall'utente Tutte le lingue SQL o JavaScript
Carica i dati Batch, streaming (limitato) Batch, streaming
Operazioni sui dati DDL, DML DDL, DML, DCL, TCL

Tipi di dati

Apache Hive e BigQuery hanno sistemi di tipi di dati diversi. Nella maggior parte dei casi, i tipi di dati in Hive possono essere mappati ai tipi di dati BigQuery con poche eccezioni, come MAP e UNION. Apache Hive esegue un tipo di trasmissione implicita più elevato rispetto a BigQuery. Di conseguenza, il traduttore SQL batch inserisce molti cast espliciti.

Hive BigQuery
TINYINT INT64
SMALLINT INT64
INT INT64
BIGINT INT64
DECIMALE NUMERIC
FLOAT FLOAT64
DOPPIO FLOAT64
BOOLEANO BOOL
STRING STRING
VARCHAR STRING
CHAR STRING
BINARY BYTES
DATA DATA
- DATETIME
- TEMPO
TIMESTAMP DATETIME/TIMESTAMP
INTERVALLO -
ARRAY ARRAY
STRUCT STRUCT
MAPS STRUCT con valori chiave (campo REPEAT)
UNION STRUCT con tipi diversi
- GEOGRAPHY
- JSON

Funzioni definite dall'utente

Apache Hive supporta la scrittura di funzioni definite dall'utente (UDF) in Java. Puoi caricare le funzioni definite dall'utente in Hive per utilizzarle nelle query regolari. Le UDF BigQuery devono essere scritte in GoogleSQL o JavaScript. È consigliabile convertire le funzioni definite dall'utente Hive in funzioni definite dall'utente SQL perché hanno un rendimento migliore. Se devi utilizzare JavaScript, leggi le best practice per le funzioni UDF JavaScript. Per altri linguaggi, BigQuery supporta le funzioni remote che ti consentono di invocare le funzioni nelle funzioni Cloud Run o in Cloud Run dalle query GoogleSQL.

BigQuery non supporta le funzioni di aggregazione definite dall'utente (UDAF).

Sicurezza

Hive e BigQuery hanno modelli di sicurezza diversi, descritti nelle sezioni seguenti:

Controllo dell'accesso a Hive

A scopo di autorizzazione, Hive ha introdotto l'autorizzazione basata sugli standard SQL (introdotta in Hive 0.13.0) per abilitare il controllo granulare degli accessi. Utilizza il controllo degli accessi basato su ruoli (RBAC) per gestire l'autorizzazione per un ampio insieme di utenti e oggetti dati in un tipico ambiente aziendale. Questo meccanismo di sicurezza si basa sulle identità Hadoop. Hadoop si basa su Kerberos per autenticare le identità.

Sicurezza con Apache Sentry e Apache Ranger

Apache Ranger e Apache Sentry sono progetti Apache che utilizzano i plug-in forniti da Hive per implementare l'autorizzazione. La configurazione del RBAC di Hive non garantisce la sicurezza completa dei dati, in quanto i dati di Hive vengono in genere archiviati su HDFS, dove un utente può raggiungere direttamente i dati che non dovrebbe vedere. Ranger e Sentry applicano inoltre i dati su HDFS con ACL POSIX tradotti dalle impostazioni RBAC di Hive.

Sicurezza di BigQuery

BigQuery utilizza Identity and Access Management per controllare l'accesso ai dati di un progetto. Puoi limitare l'accesso ai set di dati BigQuery. Le tabelle e le visualizzazioni sono risorse secondarie dei set di dati e le relative autorizzazioni vengono ereditate dai set di dati. Puoi assegnare la sicurezza a livello di riga e a livello di colonna alle singole tabelle.

Puoi anche limitare l'accesso utilizzando Viste autorizzate e Set di dati autorizzati.

BigQuery cripta i dati per impostazione predefinita. Per gestire le tue chiavi di crittografia, puoi utilizzare Cloud KMS con BigQuery.

Passaggi successivi