Migração do Apache Hive para BigQuery: visão geral
Neste documento, comparamos as diferenças entre o Apache Hive e o BigQuery e falamos sobre as principais considerações para a migração. Para mais informações sobre como concluir a migração, consulte o Guia de migração do Apache Hive.
Também é possível usar tradução de SQL em lote para migrar os scripts SQL em massa ou a tradução de SQL interativo para traduzir consultas ad hoc. O Apache HiveQL é totalmente compatível com os dois serviços de tradução SQL.
Recursos
O Hive e o BigQuery são sistemas de armazenamento de dados distribuídos. A tabela a seguir compara alguns dos recursos de alto nível:
Recurso | Hive | BigQuery |
---|---|---|
Disponibilidade | Depende da implementação | Maior ou igual a 99,99% do tempo de atividade mensalmente |
Cotas | Depende da implementação | Cotas de BigQuery |
Formato aceito | Avro, Parquet, ORC, Texto | Avro, Parquet, ORC, CSV, JSON e Google Drive |
Armazenamento de tabelas gerenciadas | HDFS | Armazenamento do BigQuery no formato Capacitor |
Origens externas da tabela | HDFS, HBase | Google Cloud Storage, Google Sheets, Bigtable |
Transação | Limitado. ACID no nível da partição | Limitada no nível da partição. Compatível com transações de várias instruções. |
Suporte para API | JDBC, ODBC, Thrift | Biblioteca de clientes JDBC, ODBC, com várias linguagens |
Particionamento | Suporte | Coluna de unidade de tempo, tempo de ingestão ou intervalo de números inteiros |
Clustering | Suporte | Suporte |
Replicação | Depende do HDFS. Sem replicação cruzada de data center | Replicação confiável de data centers cruzados gerenciada pelo Google |
UDF | Todos os idiomas | SQL ou JavaScript |
Carregar dados | Lote, streaming (limitado) | Lote | Streaming |
Operações de dados | DDL e DML | DDL, DML, DCL e TCL |
Tipos de dados
O Apache Hive e o BigQuery têm sistemas de tipos de dados diferentes. Na
maioria dos casos, os tipos de dados no Hive podem ser mapeados para os tipos de dados
do BigQuery com algumas
exceções, como MAP
e UNION
. O Apache Hive executa uma conversão de tipo mais implícita do que o BigQuery. Como resultado, o tradutor de SQL em lote
insere muitas transmissões explícitas.
Hive | BigQuery |
---|---|
TINYINT | INT64 |
SMALLINT | INT64 |
INT | INT64 |
BIGINT | INT64 |
DECIMAL | NUMERIC |
FLOAT | FLOAT64 |
DOUBLE | FLOAT64 |
BOOLEANO | BOOL |
STRING | STRING |
VARCHAR | STRING |
CHAR | STRING |
BINARY | BYTES |
DATE | DATE |
- | DATETIME |
- | TIME |
TIMESTAMP | DATETIME/CARIMBO DE DATA/HORA |
INTERVAL | - |
ARRAY | ARRAY |
STRUCT | STRUCT |
MAPS | STRUCT com valores-chave (campo REPEAT) |
UNION | STRUCT com tipos diferentes |
- | GEOGRAPHY |
- | JSON |
Funções definidas pelo usuário
O Apache Hive é compatível com a criação de funções definidas pelo usuário (UDFs, na sigla em inglês) em Java. É possível carregar UDFs no Hive para serem usados em consultas regulares. UDFs do BigQuery precisam ser escritos em GoogleSQL ou JavaScript. A conversão de UDFs do Hive em UDFs do SQL é recomendada porque as UDFs do SQL têm um desempenho melhor. Se você precisar usar JavaScript, leia as Práticas recomendadas para UDFs em JavaScript. Para outras linguagens, o BigQuery é compatível com funções remotas que permitem invocar as funções no Cloud Run functions ou no Cloud Run por consultas do GoogleSQL.
O BigQuery não oferece suporte a funções de agregação definidas pelo usuário (UDAFs, na sigla em inglês).
Segurança
O Hive e o BigQuery têm diferentes modelos de segurança, que são descritos nas seções a seguir:
Controle de acesso Hive
Para fins de autorização, o Hive introduziu a autorização baseada em padrões do SQL (introduzida no Hive 0.13.0) para permitir controle de acesso refinado. Ele usa o controle de acesso baseado em papéis (RBAC) para gerenciar a autorização de um grande conjunto de usuários e objetos de dados em um ambiente corporativo típico. Esse mecanismo de segurança é baseado nas identidades do Hadoop. O Hadoop depende do Kerberos para autenticar identidades.
Proteger com o Apache Sentry e o Apache Ranger
O Apache Ranger e o Apache Sentry são projetos Apache que usam plug-ins fornecidos pelo Hive para implementar a autorização. A configuração do RBAC do Hive não é totalmente segura porque os dados do Hive geralmente são armazenados em HDFS, onde um usuário pode alcançar diretamente dados que não poderia ver. O Ranger e o Sentry também aplicam dados em HDFS com ACLs POSIX traduzidas das configurações do RBAC do Hive.
Segurança do BigQuery
O BigQuery usa o Identity and Access Management para controlar o acesso aos dados em um projeto. É possível restringir o acesso aos conjuntos de dados do BigQuery. Tabelas e visualizações são recursos filhos de conjuntos de dados, e as permissões deles são herdadas de conjuntos de dados. É possível atribuir a segurança no nível da linha e no nível da coluna a tabelas individuais.
Também é possível restringir o acesso usando visualizações autorizadas e conjuntos de dados autorizados.
O BigQuery criptografa os dados por padrão. Para gerenciar suas próprias chaves de criptografia, use o Cloud KMS com o BigQuery.
A seguir
Receba instruções guiadas para Migrar um esquema e dados do Apache Hive.
Consulte o guia de tradução do SQL do Apache Hive.