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
Consulta las instrucciones detalladas para migrar esquemas y datos desde Apache Hive.
Consulta la guía de traducción de SQL de Apache Hive.