このドキュメントでは、Lakehouse ランタイム カタログを介して Spark と Hive を BigQuery と統合する場合のデータ型とストレージ形式の動作について詳しく説明します。
具体的には、このドキュメントでは次の情報を提供します。
- サポートされているストレージ形式: Hive SerDe と Spark データソース間の Parquet、ORC、Avro、CSV、JSON などの形式の互換性の内訳。
- データ型のマッピング: Spark と BigQuery のデータ型間の正確な変換ルール。
このページを使用して、エンジン間でワークロードを実行したりテーブルをクエリしたりする前に、テーブル スキーマとストレージ形式がメタストアと一致していることを確認します。
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 SerDe テーブルと JSON SerDe テーブルは BigQuery からクエリできます。ただし、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 のデータ型 |
|---|---|
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 を使用している場合にのみ必要です。 |