Formatos de armazenamento e tipos de dados compatíveis

Este documento detalha como os tipos de dados e formatos de armazenamento se comportam ao integrar o Spark e o Hive ao BigQuery usando o catálogo de ambientes de execução do Lakehouse.

Especificamente, este documento fornece:

  • Formatos de armazenamento com suporte: uma análise de compatibilidade de formatos como Parquet, ORC, Avro, CSV e JSON em fontes de dados do Hive SerDe e do Spark.
  • Mapeamentos de tipos de dados: as regras de conversão precisas entre os tipos de dados do Spark e do BigQuery.

Use esta página para verificar se os esquemas de tabela e os formatos de armazenamento estão alinhados ao metastore antes de executar cargas de trabalho ou consultar tabelas em mecanismos.

Formatos de armazenamento com suporte entre o Hive e o Spark

As seções a seguir descrevem o formato de armazenamento e a compatibilidade da fonte de dados entre o Hive, o Spark e o BigQuery.

Mapeamento detalhado do formato de armazenamento

O BigQuery determina o formato de armazenamento de uma tabela com base na biblioteca input_format, output_format e SerDe nos metadados. A tabela a seguir mapeia essas propriedades para o formato de armazenamento do BigQuery.

Formato de entrada, formato de saída e biblioteca SerDe Formato de armazenamento do 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

Compatibilidade do Hive SerDe

A tabela a seguir lista a compatibilidade dos formatos de tabela do Hive SerDe com o BigQuery.

Formato Sintaxe DDL do Spark SQL Pode ser consultado no BigQuery
Parquet CREATE TABLE ... STORED AS PARQUET Sim
ORC CREATE TABLE ... STORED AS ORC Sim
Avro CREATE TABLE ... STORED AS AVRO Sim
CSV CREATE TABLE ... ROW FORMAT 'org.apache.hadoop.hive.serde2.OpenCSVSerde' Sim
JSON CREATE TABLE ... ROW FORMAT 'org.openx.data.jsonserde.JsonSerDe' Sim

Compatibilidade da fonte de dados do Spark

A tabela a seguir lista a compatibilidade dos formatos de tabela de origem de dados do Spark com o BigQuery.

As tabelas CSV e JSON SerDe podem ser consultadas no BigQuery. No entanto, as tabelas de origem de dados do Spark CSV e JSON não podem.

Formato Sintaxe DDL do Spark SQL Pode ser consultado no BigQuery
Parquet CREATE TABLE ... USING PARQUET Sim
ORC CREATE TABLE ... USING ORC Sim
Avro CREATE TABLE ... USING AVRO Sim
CSV CREATE TABLE ... USING CSV Não
JSON CREATE TABLE ... USING JSON Não

Tipos de dados com suporte do Spark para o BigQuery

A tabela a seguir mapeia os tipos de dados do Spark para os tipos de dados do BigQuery.

Tipo de dados do Spark Tipo de dados do BigQuery
BYTE ou TINYINT INT64
SMALLINT ou SHORT INT64
INT ou INTEGER INT64
BIGINT ou LONG INT64
DECIMAL ou NUMERIC BIGNUMERIC
FLOAT FLOAT64
DOUBLE FLOAT64
REAL FLOAT64
BOOLEAN BOOL
STRING STRING
VARCHAR STRING
CHAR ou CHARACTER STRING
BINARY BYTES
DATE DATE
TIMESTAMP ou 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 ativar esse recurso, envie um e-mail para biglake-help@google.com. Isso só é necessário se as cargas de trabalho usarem MAP.

A seguir