Migrazione da Apache Hive a BigQuery: panoramica
Questo documento confronta le differenze tra Apache Hive e BigQuery e illustra le considerazioni chiave per la migrazione. Per ulteriori informazioni su come completare la migrazione, consulta la guida alla migrazione di Apache Hive.
Puoi anche utilizzare la traduzione SQL in batch per eseguire la migrazione collettiva degli script SQL oppure la traduzione SQL interattiva per tradurre le query ad hoc. Apache HiveQL è completamente supportato da entrambi i servizi di traduzione SQL.
Funzionalità
Hive e BigQuery sono sistemi di data warehouse distribuiti. La tabella seguente mette a confronto alcune delle loro funzionalità di alto livello:
Funzionalità | Alveare | BigQuery |
---|---|---|
Disponibilità | Dipende dall'implementazione | >= 99,99% di tempo di attività mensile |
Quote | Dipende dall'implementazione | Quote di BigQuery |
Formato supportato | Avro, Parquet, ORC, Testo | Avro, Parquet, ORC, CSV, JSON, Google Drive |
Archiviazione delle tabelle gestite | HDFS | lo spazio di archiviazione BigQuery in formato condensatore |
Origini delle tabelle esterne | HDFS, HBase | Google Cloud Storage, Fogli Google, Bigtable |
Transazione | Limitato. ACID a livello di partizione | Limitata 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 dell'unità di tempo, tempo di importazione o intervallo di numeri interi |
Clustering | Assistenza | Assistenza |
Replica | Dipende dall'HDFS. Nessuna replica tra data center | Replica affidabile tra data center gestita da Google |
Funzioni definite dall'utente | Tutte le lingue | SQL o JavaScript |
Carica dati | Batch, Streaming (limitato) | Batch, Streaming |
Operazioni sui dati | DDL, DML | DDL, DML, DCL, TCL |
Tipi di dati
Apache Hive e BigQuery hanno sistemi diversi per i tipi di dati. Nella maggior parte dei casi, i tipi di dati in Hive possono essere mappati ai tipi di dati di BigQuery con poche eccezioni, ad esempio MAP
e UNION
. Apache Hive esegue trasmissione di tipo
più implicita rispetto a BigQuery. Di conseguenza, il traduttore SQL batch
inserisci molti cast espliciti.
Alveare | BigQuery |
---|---|
TINYINT | INT64 |
INTELLIGENTE | INT64 |
INT | INT64 |
GRANDE | INT64 |
DECIMALE | NUMERIC |
FLOAT | FLOAT64 |
DOPPIO | FLOAT64 |
BOOLEANO | BOOL |
STRINGA | STRINGA |
VARCHAR | STRINGA |
CHAR | STRINGA |
BINARIO | BYTES |
DATA | DATA |
- | DATETIME |
- | TEMPO |
TIMESTAMP | DATA/ORA/TIMESTAMP |
INTERVALLO | - |
ARRAY | ARRAY |
STRUCT | STRUCT |
MAPS | STRUCT con coppie chiave-valore (campo REPEAT) |
UNION | STRUTTURARE 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 normali. Le funzioni definite dall'utente BigQuery devono essere scritte in GoogleSQL o JavaScript. È consigliabile convertire le funzioni definite dall'utente Hive in funzioni definite dall'utente SQL perché queste hanno prestazioni migliori. Se devi utilizzare JavaScript, consulta le best practice per le funzioni JavaScript definite dall'utente. Per altri linguaggi, BigQuery supporta funzioni remote che ti consentono di richiamare le funzioni in Cloud Functions o 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 Hive
Ai fini dell'autorizzazione, Hive ha introdotto l'autorizzazione basata su standard SQL (introdotta in Hive 0.13.0) per abilitare controllo dell'accesso dell'accesso granulare. Utilizza controllo dell'accesso basato sui 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 l'autenticazione delle identità.
Protezione con Apache Sentry e Apache Ranger
Apache Ranger e Apache Sentry sono progetti Apache che utilizzano plug-in forniti da Hive per implementare l'autorizzazione. La configurazione di Hive RBAC non protegge completamente i dati, poiché i dati Hive vengono generalmente archiviati su HDFS in cui un utente può accedere direttamente ai dati che non dovrebbe vedere. Ranger e Sentry applicano anche 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 in un progetto. Puoi limitare l'accesso ai set di dati BigQuery. Le tabelle e le viste sono risorse figlio dei set di dati e le relative autorizzazioni vengono ereditate dai set di dati. Puoi assegnare una sicurezza a livello di riga e a livello di colonna alle singole tabelle.
Puoi anche limitare l'accesso utilizzando le visualizzazioni autorizzate e i 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
Ricevi istruzioni dettagliate per eseguire la migrazione di schema e dati da Apache Hive.
Consulta la guida alla traduzione SQL di Apache Hive.