透過 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 的相容性。
您可以從 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 |
是 |
| 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 時,才需要執行這項操作。 |