Ce document explique le comportement des types de données et des formats de stockage lors de l'intégration de Spark et Hive à BigQuery via le catalogue du runtime Lakehouse.
Plus précisément, ce document fournit les informations suivantes :
- Formats de stockage compatibles : tableau de compatibilité des formats tels que Parquet, ORC, Avro, CSV et JSON dans les sources de données Hive SerDe et Spark.
- Mappages des types de données : règles de conversion précises entre les types de données Spark et BigQuery.
Utilisez cette page pour vérifier que vos schémas de table et formats de stockage sont compatibles avec le metastore avant d'exécuter des charges de travail ou d'interroger des tables sur plusieurs moteurs.
Formats de stockage compatibles entre Hive et Spark
Les sections suivantes décrivent le format de stockage et la compatibilité des sources de données entre Hive, Spark et BigQuery.
Mappage détaillé du format de stockage
BigQuery détermine le format de stockage d'une table en fonction des bibliothèques input_format, output_format et SerDe dans les métadonnées. Le tableau suivant mappe ces propriétés au format de stockage BigQuery.
| Format d'entrée, format de sortie et bibliothèque SerDe | Format de stockage 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 |
Compatibilité avec Hive SerDe
Le tableau suivant indique la compatibilité des formats de table Hive SerDe avec BigQuery.
| Format | Syntaxe DDL Spark SQL | Interrogeable depuis BigQuery |
|---|---|---|
| Parquet | CREATE TABLE ... STORED AS PARQUET |
Oui |
| ORC | CREATE TABLE ... STORED AS ORC |
Oui |
| Avro | CREATE TABLE ... STORED AS AVRO |
Oui |
| CSV | CREATE TABLE ... ROW FORMAT 'org.apache.hadoop.hive.serde2.OpenCSVSerde' |
Oui |
| JSON | CREATE TABLE ... ROW FORMAT 'org.openx.data.jsonserde.JsonSerDe' |
Oui |
Compatibilité des sources de données Spark
Le tableau suivant liste la compatibilité des formats de table de source de données Spark avec BigQuery.
Les tables SerDe CSV et JSON peuvent être interrogées depuis BigQuery. Toutefois, les tables de source de données Spark CSV et JSON ne le sont pas.
| Format | Syntaxe DDL Spark SQL | Interrogeable depuis BigQuery |
|---|---|---|
| Parquet | CREATE TABLE ... USING PARQUET |
Oui |
| ORC | CREATE TABLE ... USING ORC |
Oui |
| Avro | CREATE TABLE ... USING AVRO |
Oui |
| CSV | CREATE TABLE ... USING CSV |
Non |
| JSON | CREATE TABLE ... USING JSON |
Non |
Types de données compatibles de Spark à BigQuery
Le tableau suivant mappe les types de données Spark aux types de données BigQuery.
| Type de données Spark | Type de données BigQuery |
|---|---|
BYTE ou TINYINT |
INT64 |
SMALLINT ou SHORT |
INT64 |
INT ou INTEGER |
INT64 |
BIGINT ou LONG |
INT64 |
DECIMAL ou NUMERIC |
BIGNUMERIC |
FLOAT |
FLOAT64 |
DOUBLE |
FLOAT64 |
REAL |
FLOAT64 |
BOOLEAN |
BOOL |
STRING |
STRING |
VARCHAR |
STRING |
CHAR ou CHARACTER |
STRING |
BINARY |
BYTES |
DATE |
DATE |
TIMESTAMP ou 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>>Pour activer cette fonctionnalité, envoyez un e-mail à biglake-help@google.com. Cette étape n'est nécessaire que si vos charges de travail utilisent MAP. |