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. |