In diesem Dokument wird beschrieben, wie sich Datentypen und Speicherformate verhalten, wenn Spark und Hive über den Lakehouse-Laufzeitkatalog in BigQuery eingebunden werden.
Dieses Dokument enthält Folgendes:
- Unterstützte Speicherformate: Eine Aufschlüsselung der Kompatibilität von Formaten wie Parquet, ORC, Avro, CSV und JSON für Hive SerDe und Spark-Datenquellen.
- Datentypzuordnungen: Die genauen Konvertierungsregeln zwischen Spark- und BigQuery-Datentypen.
Auf dieser Seite können Sie prüfen, ob Ihre Tabellenschemas und Speicherformate mit dem Metastore übereinstimmen, bevor Sie Arbeitslasten ausführen oder Tabellen über verschiedene Engines hinweg abfragen.
Unterstützte Speicherformate zwischen Hive und Spark
In den folgenden Abschnitten werden das Speicherformat und die Datenquellenkompatibilität zwischen Hive, Spark und BigQuery beschrieben.
Detaillierte Zuordnung des Speicherformats
BigQuery bestimmt das Speicherformat einer Tabelle anhand der Bibliotheken input_format, output_format und SerDe in den Metadaten. In der folgenden Tabelle werden diese Eigenschaften dem BigQuery-Speicherformat zugeordnet.
| Eingabeformat, Ausgabeformat und SerDe-Bibliothek | BigQuery-Speicherformat |
|---|---|
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-Kompatibilität
In der folgenden Tabelle wird die Kompatibilität von Hive SerDe-Tabellenformaten mit BigQuery aufgeführt.
| Format | Spark SQL-DDL-Syntax | Über BigQuery abfragbar |
|---|---|---|
| Parquet | CREATE TABLE ... STORED AS PARQUET |
Ja |
| ORC | CREATE TABLE ... STORED AS ORC |
Ja |
| Avro | CREATE TABLE ... STORED AS AVRO |
Ja |
| CSV | CREATE TABLE ... ROW FORMAT 'org.apache.hadoop.hive.serde2.OpenCSVSerde' |
Ja |
| JSON | CREATE TABLE ... ROW FORMAT 'org.openx.data.jsonserde.JsonSerDe' |
Ja |
Kompatibilität von Spark-Datenquellen
In der folgenden Tabelle ist die Kompatibilität von Spark-Datenquellen-Tabellenformaten mit BigQuery aufgeführt.
CSV- und JSON-SerDe-Tabellen können in BigQuery abgefragt werden. Bei CSV- und JSON-Spark-Datenquellentabellen ist das jedoch nicht der Fall.
| Format | Spark SQL-DDL-Syntax | Über BigQuery abfragbar |
|---|---|---|
| Parquet | CREATE TABLE ... USING PARQUET |
Ja |
| ORC | CREATE TABLE ... USING ORC |
Ja |
| Avro | CREATE TABLE ... USING AVRO |
Ja |
| CSV | CREATE TABLE ... USING CSV |
Nein |
| JSON | CREATE TABLE ... USING JSON |
Nein |
Unterstützte Datentypen für die Übertragung von Spark zu BigQuery
In der folgenden Tabelle werden Spark-Datentypen BigQuery-Datentypen zugeordnet.
| Spark-Datentyp | BigQuery-Datentyp |
|---|---|
BYTE oder TINYINT |
INT64 |
SMALLINT oder SHORT |
INT64 |
INT oder INTEGER |
INT64 |
BIGINT oder LONG |
INT64 |
DECIMAL oder NUMERIC |
BIGNUMERIC |
FLOAT |
FLOAT64 |
DOUBLE |
FLOAT64 |
REAL |
FLOAT64 |
BOOLEAN |
BOOL |
STRING |
STRING |
VARCHAR |
STRING |
CHAR oder CHARACTER |
STRING |
BINARY |
BYTES |
DATE |
DATE |
TIMESTAMP oder 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>>Wenn Sie diese Funktion aktivieren möchten, senden Sie eine E-Mail an biglake-help@google.com. Dies ist nur erforderlich, wenn in Ihren Arbeitslasten MAP verwendet wird. |