En este documento, se detalla el comportamiento de los tipos de datos y los formatos de almacenamiento cuando se integran Spark y Hive con BigQuery a través del catálogo de entorno de ejecución de Lakehouse.
En particular, este documento proporciona lo siguiente:
- Formatos de almacenamiento compatibles: Un desglose de compatibilidad de formatos como Parquet, ORC, Avro, CSV y JSON en las fuentes de datos de Hive SerDe y Spark.
- Asignaciones de tipos de datos: Las reglas de conversión precisas entre los tipos de datos de Spark y BigQuery.
Usa esta página para verificar que los esquemas de tus tablas y los formatos de almacenamiento se alineen con el metastore antes de ejecutar cargas de trabajo o consultar tablas en los motores.
Formatos de almacenamiento compatibles entre Hive y Spark
En las siguientes secciones, se describe la compatibilidad de formatos de almacenamiento y fuentes de datos entre Hive, Spark y BigQuery.
Asignación detallada de formatos de almacenamiento
BigQuery determina el formato de almacenamiento de una tabla en función de la biblioteca input_format, output_format y SerDe en los metadatos. En la siguiente tabla, se asignan estas propiedades al formato de almacenamiento de BigQuery.
| Formato de entrada, formato de salida y biblioteca SerDe | Formato de almacenamiento de BigQuery |
|---|---|
org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe |
Parquet |
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat org.apache.hadoop.hive.ql.io.orc.OrcSerde |
ORC |
org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat org.apache.hadoop.hive.serde2.avro.AvroSerDe |
Avro |
org.apache.hadoop.mapred.TextInputFormat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat org.apache.hadoop.hive.serde2.OpenCSVSerde |
CSV |
org.apache.hadoop.mapred.TextInputFormat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat org.openx.data.jsonserde.JsonSerDe |
JSON |
org.apache.hadoop.mapred.TextInputFormat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat org.apache.hive.hcatalog.data.JsonSerDe |
JSON |
Compatibilidad con Hive SerDe
En la siguiente tabla, se muestra la compatibilidad de los formatos de tabla de Hive SerDe con BigQuery.
| Formato | Sintaxis de DDL de Spark SQL | Se puede consultar desde BigQuery |
|---|---|---|
| Parquet | CREATE TABLE ... STORED AS PARQUET |
Sí |
| ORC | CREATE TABLE ... STORED AS ORC |
Sí |
| Avro | CREATE TABLE ... STORED AS AVRO |
Sí |
| CSV | CREATE TABLE ... ROW FORMAT 'org.apache.hadoop.hive.serde2.OpenCSVSerde' |
Sí |
| JSON | CREATE TABLE ... ROW FORMAT 'org.openx.data.jsonserde.JsonSerDe' |
Sí |
Compatibilidad con fuentes de datos de Spark
En la siguiente tabla, se muestra la compatibilidad de los formatos de tabla de fuentes de datos de Spark con BigQuery.
Las tablas SerDe de CSV y JSON se pueden consultar desde BigQuery. Sin embargo, las tablas de fuentes de datos de Spark de CSV y JSON no lo son.
| Formato | Sintaxis de DDL de Spark SQL | Se puede consultar desde BigQuery |
|---|---|---|
| Parquet | CREATE TABLE ... USING PARQUET |
Sí |
| ORC | CREATE TABLE ... USING ORC |
Sí |
| Avro | CREATE TABLE ... USING AVRO |
Sí |
| CSV | CREATE TABLE ... USING CSV |
No |
| JSON | CREATE TABLE ... USING JSON |
No |
Tipos de datos compatibles de Spark a BigQuery
En la siguiente tabla, se asignan los tipos de datos de Spark a los tipos de datos de BigQuery.
| Tipo de datos de Spark | Tipo de datos de BigQuery |
|---|---|
BYTE o TINYINT |
INT64 |
SMALLINT o SHORT |
INT64 |
INT o INTEGER |
INT64 |
BIGINT o LONG |
INT64 |
DECIMAL o NUMERIC |
BIGNUMERIC |
FLOAT |
FLOAT64 |
DOUBLE |
FLOAT64 |
REAL |
FLOAT64 |
BOOLEAN |
BOOL |
STRING |
STRING |
VARCHAR |
STRING |
CHAR o CHARACTER |
STRING |
BINARY |
BYTES |
DATE |
DATE |
TIMESTAMP o TIMESTAMP_LTZ |
TIMESTAMP |
ARRAY |
ARRAY |
STRUCT<col_name: type1, ...> |
STRUCT<col_name: type1, ...> |
MAP<key_type, value_type> |
ARRAY<STRUCT<key: key_type, value: value_type>>Para habilitar esta función, envía un correo electrónico a biglake-help@google.com. Esto solo es necesario si tus cargas de trabajo usan MAP. |