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 los aspectos clave que se deben tener en cuenta 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 SQL en bloque o la traducción de SQL interactiva para traducir consultas específicas. Los servicios de traducción de SQL admiten Apache HiveQL.

Funciones

Tanto Hive como BigQuery son sistemas de almacén 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 Tiempo de funcionamiento mensual>= 99,99%
Cuotas Depende de la implementación Cuotas de BigQuery
Formato admitido Avro, Parquet, ORC y texto Avro, Parquet, ORC, CSV, JSON y Google Drive
Almacenamiento de tablas gestionado HDFS Almacenamiento de BigQuery en formato Capacitor
Fuentes de tablas externas HDFS y HBase Google Cloud Storage, Hojas de cálculo de Google, Bigtable
Transacción limitado. ACID a nivel de partición Limitado a nivel de partición. Admite transacciones con varias instrucciones.
Compatibilidad con la API JDBC, ODBC y Thrift JDBC, ODBC y biblioteca de cliente con muchos idiomas
Particiones Asistencia Columna de unidad de tiempo, hora de ingestión o intervalo de números enteros
Agrupamiento en clústeres Asistencia Asistencia
Replicación Depende de HDFS. Sin replicación entre centros de datos Replicación de datos entre centros de datos fiable gestionada por Google
FDU Todos los idiomas SQL o JavaScript
Cargar datos Por lotes, en streaming (limitado) Por lotes, en streaming
Operaciones de datos DDL y DML DDL, DML, DCL y 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 de Hive se pueden asignar a tipos de datos de BigQuery con algunas excepciones, como MAP y UNION. Apache Hive realiza más conversiones de tipo implícitas 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
FECHA FECHA
- DATETIME
- HORA
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 permite escribir funciones definidas por el usuario (UDF) en Java. Puedes cargar FDUs en Hive para usarlas en consultas normales. Las UDFs de BigQuery deben escribirse en GoogleSQL o JavaScript. Se recomienda convertir las UDFs de Hive a UDFs de SQL porque estas últimas tienen un mejor rendimiento. Si necesitas usar JavaScript, consulta las prácticas recomendadas para las funciones definidas por el usuario de JavaScript. En otros lenguajes, BigQuery admite funciones remotas, que te permiten invocar tus funciones en Cloud Run Functions o Cloud Run desde consultas de GoogleSQL.

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

Seguridad

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

Control de acceso de Hive

Para la autorización, Hive introdujo la autorización basada en estándares SQL (introducida en Hive 0.13.0) para habilitar el control de acceso pormenorizado. Utiliza el control de acceso basado en roles (RBAC) para gestionar la autorización de un gran conjunto de usuarios y objetos de datos en un entorno empresarial típico. Este mecanismo de seguridad se basa en las identidades de Hadoop. Hadoop se basa en Kerberos para autenticar identidades.

Protección 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. Configurar el control de acceso basado en roles de Hive no protege los datos por completo, ya que los datos de Hive suelen almacenarse en HDFS, donde un usuario puede acceder directamente a datos que no debería ver. Ranger y Sentry también aplican los datos en HDFS con ACLs de POSIX traducidos de la configuración de RBAC de Hive.

Seguridad de BigQuery

BigQuery usa Gestión de Identidades y Accesos para controlar el acceso a los datos de 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 nivel de columna a tablas concretas.

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

BigQuery cifra los datos de forma predeterminada. Para gestionar tus propias claves de encriptado, puedes usar Cloud KMS con BigQuery.

Siguientes pasos