支持的存储格式和数据类型

本文档详细介绍了通过 Lakehouse 运行时目录将 Spark 和 Hive 与 BigQuery 集成时,数据类型和存储格式的行为。

具体来说,本文档提供了以下内容:

  • 支持的存储格式:有关 Parquet、ORC、Avro、CSV 和 JSON 等格式在 Hive SerDe 和 Spark 数据源之间的兼容性细分。
  • 数据类型映射:Spark 和 BigQuery 数据类型之间的精确转换规则。

在跨引擎运行工作负载或查询表之前,请使用此页面验证表架构和存储格式是否与元存储区一致。

Hive 和 Spark 之间支持的存储格式

以下部分介绍了 Hive、Spark 和 BigQuery 之间的存储格式和数据源兼容性。

详细的存储格式映射

BigQuery 会根据元数据中的 input_formatoutput_formatSerDe 库来确定表的存储格式。下表将这些属性映射到 BigQuery 存储格式。

输入格式、输出格式和 SerDe 库 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

Hive SerDe 兼容性

下表列出了 Hive SerDe 表格式与 BigQuery 的兼容性。

格式 Spark SQL DDL 语法 可从 BigQuery 查询
Parquet CREATE TABLE ... STORED AS PARQUET
ORC CREATE TABLE ... STORED AS ORC
Avro CREATE TABLE ... STORED AS AVRO
CSV CREATE TABLE ... ROW FORMAT 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
JSON CREATE TABLE ... ROW FORMAT 'org.openx.data.jsonserde.JsonSerDe'

Spark 数据源兼容性

下表列出了 Spark 数据源表格式与 BigQuery 的兼容性。

您可以在 BigQuery 中查询 CSV 和 JSON SerDe 表。不过,CSV 和 JSON Spark 数据源表不是。

格式 Spark SQL DDL 语法 可从 BigQuery 查询
Parquet CREATE TABLE ... USING PARQUET
ORC CREATE TABLE ... USING ORC
Avro CREATE TABLE ... USING AVRO
CSV CREATE TABLE ... USING CSV
JSON CREATE TABLE ... USING JSON

从 Spark 到 BigQuery 的受支持数据类型

下表将 Spark 数据类型映射到 BigQuery 数据类型。

Spark 数据类型 BigQuery 数据类型
BYTETINYINT INT64
SMALLINTSHORT INT64
INTINTEGER INT64
BIGINTLONG INT64
DECIMALNUMERIC BIGNUMERIC
FLOAT FLOAT64
DOUBLE FLOAT64
REAL FLOAT64
BOOLEAN BOOL
STRING STRING
VARCHAR STRING
CHARCHARACTER STRING
BINARY BYTES
DATE DATE
TIMESTAMPTIMESTAMP_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>>
如需启用此功能,请发送电子邮件至 biglake-help@google.com。仅当您的工作负载使用 MAP 时,才需要执行此操作。

后续步骤