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

借助 Lakehouse 运行时目录,您可以将 Apache Spark 和 Apache Hive 与 BigQuery 集成,支持 Parquet、ORC、Avro、CSV、JSON 和 Delta Lake 等存储格式。在运行跨引擎工作负载之前,您可以查看这些 Hive SerDe 和 Spark 数据源兼容性以及数据类型转换规则,以验证表架构是否与 Lakehouse 运行时目录一致。

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

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

详细的存储格式映射

BigQuery 根据元数据中的 input_format、output_format 和 SerDe 库确定表的存储格式。下表将这些属性映射到 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 的兼容性。

CSV 和 JSON SerDe 表可从 BigQuery 查询。但是,CSV 和 JSON Spark 数据源表不可从 BigQuery 查询。

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

从 Spark 到 BigQuery 支持的数据类型

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

Spark 数据类型 BigQuery 数据类型
BYTE 或 TINYINT INT64
SMALLINT 或 SHORT INT64
INT 或 INTEGER INT64
BIGINT 或 LONG INT64
DECIMAL 或 NUMERIC BIGNUMERIC
FLOAT FLOAT64
DOUBLE FLOAT64
REAL FLOAT64
BOOLEAN BOOL
STRING STRING
VARCHAR STRING
CHAR 或 CHARACTER STRING
BINARY BYTES
DATE DATE
TIMESTAMP 或 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>>
如需启用此功能,请发送电子邮件至 biglake-help@google.com。仅当您的工作负载使用 MAP 时,才需要执行此操作。

后续步骤