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?
Obtén instrucciones paso a paso para migrar el esquema y los datos desde Apache Hive.
Consulta la guía de traducción de SQL de Apache Hive.