Migração do Apache Hive para o BigQuery: vista geral

Este documento compara as diferenças entre o Apache Hive e o BigQuery, e aborda 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 pode usar a tradução de SQL em lote para migrar os seus scripts SQL em massa ou a tradução de SQL interativa para traduzir consultas ad hoc. O Apache HiveQL é totalmente suportado pelos serviços de tradução de SQL.

Funcionalidades

O Hive e o BigQuery são sistemas de armazéns de dados distribuídos. A tabela seguinte compara algumas das respetivas funcionalidades de nível superior:

Funcionalidade Hive BigQuery
Disponibilidade Depende da implementação >= 99,99% de tempo de atividade mensal
Quotas Depende da implementação Quotas do BigQuery
Formato suportado Avro, Parquet, ORC, Text Avro, Parquet, ORC, CSV, JSON, Google Drive
Armazenamento de tabelas gerido HDFS Armazenamento do BigQuery no formato Capacitor
Origens de tabelas externas HDFS, HBase Google Cloud Storage, Google Sheets, Bigtable
Transação Limitada. ACID ao nível da partição Limitada ao nível da partição. Suporta transações com várias declarações.
Suporte de API JDBC, ODBC, Thrift JDBC, ODBC, biblioteca cliente com vários idiomas
Partição Apoio técnico Coluna de unidade de tempo, hora de carregamento ou intervalo de números inteiros
Clustering Apoio técnico Apoio técnico
Replicação Depende do HDFS. Sem replicação entre centros de dados Replicação de dados entre centros de dados fiável gerida pela Google
FDU Todos os idiomas SQL ou JavaScript
Carregue dados Lote, streaming (limitado) Lote, streaming
Operações de dados DDL, 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 tipos de dados do BigQuery com algumas exceções, como MAP e UNION. O Apache Hive realiza mais conversões de tipo implícitas do que o BigQuery. Como resultado, o tradutor de SQL em lote insere muitas conversões explícitas.

Hive BigQuery
TINYINT INT64
SMALLINT INT64
INT INT64
BIGINT INT64
DECIMAL NUMERIC
FLOAT FLOAT64
DOUBLE FLOAT64
BOOLEAN BOOL
STRING STRING
VARCHAR STRING
CHAR STRING
BINARY BYTES
DATA DATA
- DATA/HORA
- HORA
TIMESTAMP DATETIME/TIMESTAMP
INTERVALO -
ARRAY ARRAY
STRUCT STRUCT
MAPS STRUCT com valores-chave (campo REPEAT)
UNION STRUCT com diferentes tipos
- GEOGRAPHY
- JSON

Funções definidas pelo utilizador

O Apache Hive suporta a escrita de funções definidas pelo utilizador (FDUs) em Java. Pode carregar FDUs no Hive para serem usadas em consultas normais. As UDFs do BigQuery têm de ser escritas em GoogleSQL ou JavaScript. Recomendamos a conversão das UDFs do Hive em UDFs de SQL porque as UDFs de SQL têm um desempenho melhor. Se precisar de usar JavaScript, leia as práticas recomendadas para UDFs de JavaScript. Para outros idiomas, o BigQuery suporta funções remotas que lhe permitem invocar as suas funções em funções do Cloud Run ou Cloud Run a partir de consultas GoogleSQL.

O BigQuery não suporta funções de agregação definidas pelo utilizador (UDAFs).

Segurança

O Hive e o BigQuery têm modelos de segurança diferentes que são descritos nas secções seguintes:

Controlo de acesso do Hive

Para fins de autorização, o Hive introduziu a autorização baseada em normas SQL (introduzida no Hive 0.13.0) para permitir o controlo de acesso detalhado. Usa o controlo de acesso baseado em funções (RBAC) para gerir a autorização de um grande conjunto de utilizadores e objetos de dados num ambiente empresarial típico. Este mecanismo de segurança baseia-se nas identidades do Hadoop. O Hadoop baseia-se no Kerberos para autenticar identidades.

Seguro 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 autorização. A configuração do RBAC do Hive não protege totalmente os dados, porque os dados do Hive são normalmente armazenados no HDFS, onde um utilizador pode aceder diretamente a dados que não deve ver. O Ranger e o Sentry também aplicam dados no HDFS com ACLs POSIX traduzidas a partir das definições de RBAC do Hive.

Segurança do BigQuery

O BigQuery usa a gestão de identidades e acessos para controlar o acesso aos dados num projeto. Pode restringir o acesso a conjuntos de dados do BigQuery. As tabelas e as vistas são recursos secundários de conjuntos de dados e as respetivas autorizações são herdadas dos conjuntos de dados. Pode atribuir segurança ao nível da linha e ao nível da coluna a tabelas individuais.

Também pode restringir o acesso através de visualizações autorizadas e conjuntos de dados autorizados.

O BigQuery encripta os dados por predefinição. Para gerir as suas próprias chaves de encriptação, pode usar o Cloud KMS com o BigQuery.

O que se segue?