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