支援的儲存格式和資料類型

本文將詳細說明透過 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 時,才需要執行這項操作。

後續步驟