Questo documento descrive il comportamento dei tipi di dati e dei formati di archiviazione durante l'integrazione di Spark e Hive con BigQuery tramite il catalogo runtime Lakehouse.
In particolare, questo documento fornisce:
- Formati di archiviazione supportati: una suddivisione della compatibilità di formati come Parquet, ORC, Avro, CSV e JSON tra le librerie SerDe di Hive e le origini dati Spark.
- Mappature dei tipi di dati: le regole di conversione precise tra i tipi di dati Spark e BigQuery.
Utilizza questa pagina per verificare che gli schemi delle tabelle e i formati di archiviazione siano allineati al metastore prima di eseguire i workload o di eseguire query sulle tabelle tra i motori.
Formati di archiviazione supportati tra Hive e Spark
Le sezioni seguenti descrivono la compatibilità del formato di archiviazione e dell'origine dati tra Hive, Spark e BigQuery.
Mappatura dettagliata del formato di archiviazione
BigQuery determina il formato di archiviazione di una tabella in base alla libreria input_format, output_format e SerDe nei metadati. La tabella seguente mappa queste proprietà al formato di archiviazione di BigQuery.
| Libreria di formato di input, formato di output e SerDe | Formato di archiviazione di 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à di SerDe di Hive
La tabella seguente elenca la compatibilità dei formati di tabella SerDe di Hive con BigQuery.
| Formato | Sintassi DDL di Spark SQL | È possibile eseguire query da BigQuery |
|---|---|---|
| Parquet | CREATE TABLE ... STORED AS PARQUET |
Sì |
| ORC | CREATE TABLE ... STORED AS ORC |
Sì |
| Avro | CREATE TABLE ... STORED AS AVRO |
Sì |
| CSV | CREATE TABLE ... ROW FORMAT 'org.apache.hadoop.hive.serde2.OpenCSVSerde' |
Sì |
| JSON | CREATE TABLE ... ROW FORMAT 'org.openx.data.jsonserde.JsonSerDe' |
Sì |
Compatibilità dell'origine dati Spark
La tabella seguente elenca la compatibilità dei formati di tabella dell'origine dati Spark con BigQuery.
È possibile eseguire query sulle tabelle SerDe CSV e JSON da BigQuery. Tuttavia, non è possibile eseguire query sulle tabelle dell'origine dati Spark CSV e JSON.
| Formato | Sintassi DDL di Spark SQL | È possibile eseguire query da BigQuery |
|---|---|---|
| Parquet | CREATE TABLE ... USING PARQUET |
Sì |
| ORC | CREATE TABLE ... USING ORC |
Sì |
| Avro | CREATE TABLE ... USING AVRO |
Sì |
| CSV | CREATE TABLE ... USING CSV |
No |
| JSON | CREATE TABLE ... USING JSON |
No |
Tipi di dati supportati da Spark a BigQuery
La tabella seguente mappa i tipi di dati Spark ai tipi di dati BigQuery.
| Tipo di dati Spark | Tipo di dati BigQuery |
|---|---|
BYTE o TINYINT |
INT64 |
SMALLINT o SHORT |
INT64 |
INT o INTEGER |
INT64 |
BIGINT o LONG |
INT64 |
DECIMAL o NUMERIC |
BIGNUMERIC |
FLOAT |
FLOAT64 |
DOUBLE |
FLOAT64 |
REAL |
FLOAT64 |
BOOLEAN |
BOOL |
STRING |
STRING |
VARCHAR |
STRING |
CHAR o CHARACTER |
STRING |
BINARY |
BYTES |
DATE |
DATE |
TIMESTAMP o 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>>Per attivare questa funzionalità, invia un'email a biglake-help@google.com. Questa operazione è necessaria solo se i workload utilizzano MAP. |