Migración de Apache Hive a BigQuery: Descripción general

En este documento, se comparan las diferencias entre Apache Hive y BigQuery, y se analizan las consideraciones clave para la migración. Para obtener más información sobre cómo completar la migración, consulta la Guía de migración de Apache Hive.

También puedes usar la traducción de SQL por lotes para migrar tus secuencias de comandos de SQL de forma masiva o la traducción de SQL interactiva para traducir consultas ad hoc. Apache HiveQL es compatible por completo con ambos servicios de traducción de SQL.

Funciones

Hive y BigQuery son sistemas de almacenamiento de datos distribuidos. En la siguiente tabla, se comparan algunas de sus funciones de alto nivel:

Función Hive BigQuery
Disponibilidad Depende de la implementación >= 99.99% mensual de tiempo de actividad
Cuotas Depende de la implementación Cuotas de BigQuery
Formato compatible: Avro, Parquet, ORC, Text Avro, Parquet, ORC, CSV, JSON y Google Drive
Almacenamiento de tablas administradas HDFS Almacenamiento de BigQuery en formato de Capacitor
Fuentes de tablas externas HDFS, HBase Google Cloud Storage, Hojas de cálculo de Google, Bigtable
Transacción Limitado. ACID a nivel de partición Limitado a nivel de la partición. Admite transacciones de varias declaraciones.
Compatibilidad de la API JDBC, ODBC, Thrift JDBC, ODBC, la biblioteca cliente con muchos lenguajes
Partición Asistencia Columna de unidad de tiempo, tiempo de transferencia o rango de números enteros
Agrupamiento en clústeres Asistencia Asistencia
Replicación Depende de HDFS. Sin replicación entre centros de datos Replicación confiable de centros de datos administrados por Google
UDF Todos los idiomas SQL o JavaScript
Carga de datos Lotes, Transmisión (limitado) Lotes, Transmisión
Operaciones con datos DDL, DML DDL, DML, DCL, TCL

Tipos de datos

Apache Hive y BigQuery tienen sistemas de tipos de datos diferentes. En la mayoría de los casos, los tipos de datos en Hive se pueden asignar a los tipos de datos de BigQuery con pocas excepciones, como MAP y UNION. Apache Hive realiza una conversión de tipos más implícita que BigQuery. Como resultado, el traductor de SQL por lotes inserta muchas conversiones 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
DATE DATE
- DATETIME
- TIME
TIMESTAMP DATETIME/TIMESTAMP
INTERVAL -
ARRAY ARRAY
STRUCT STRUCT
MAPS STRUCT con valores de clave (campo REPEAT)
UNION STRUCT con diferentes tipos
- GEOGRAPHY
- JSON

Funciones definidas por el usuario

Apache Hive admite la escritura de funciones definidas por el usuario (UDF) en Java. Puedes cargar las UDF en Hive para usarlas en consultas regulares. Las UDF de BigQuery deben estar escritas en GoogleSQL o JavaScript. Se recomienda convertir las UDF de Hive en UDF de SQL, ya que las UDF de SQL tienen un mejor rendimiento. Si necesitas usar JavaScript, lee Prácticas recomendadas para las UDF de JavaScript. Para otros lenguajes, BigQuery es compatible con funciones remotas que te permiten invocar funciones en funciones de Cloud Run o Cloud Run a partir de consultas de GoogleSQL.

BigQuery no admite funciones de agregación definidas por el usuario (UDAF).

Seguridad

Hive y BigQuery tienen modelos de seguridad diferentes que se describen en las siguientes secciones:

Control de acceso a Hive

Para fines de autorización, Hive incluyó la autorización basada en estándares de SQL (presentada en Hive 0.13.0) a fin de habilitar el control de acceso detallado. Utiliza el control de acceso basado en funciones (RBAC) para administrar la autorización de un conjunto grande de usuarios y objetos de datos en un entorno empresarial típico. Este mecanismo de seguridad se basa en las identidades de Hadoop. Hadoop depende de Kerberos para autenticar identidades.

Protege con Apache Sentry y Apache Ranger

Apache Ranger y Apache Sentry son proyectos de Apache que usan complementos proporcionados por Hive para implementar la autorización. La configuración del RBAC de Hive no protege completamente los datos, ya que los datos de Hive suelen almacenarse en HDFS, donde un usuario puede llegar directamente a los datos que no deberían ver. Ranger y Sentry también aplican datos en HDFS con las LCA de POSIX traducidas de la configuración de RBAC desde Hive.

Seguridad de BigQuery

BigQuery usa la administración de identidades y accesos para controlar el acceso a los datos en un proyecto. Puedes restringir el acceso a los conjuntos de datos de BigQuery. Las tablas y las vistas son recursos secundarios de los conjuntos de datos y sus permisos se heredan de los conjuntos de datos. Puedes asignar seguridad a nivel de fila y de nivel de columna a tablas individuales.

También puedes restringir el acceso mediante las vistas autorizadas y los conjuntos de datos autorizados.

BigQuery encripta los datos de forma predeterminada. Para administrar tus propias claves de encriptación, puedes usar Cloud KMS con BigQuery.

¿Qué sigue?