במאמר הזה מוסבר איך סוגי נתונים ופורמטים של אחסון מתנהגים כשמשלבים את Spark ו-Hive עם BigQuery באמצעות קטלוג זמן הריצה של Lakehouse.
באופן ספציפי, המסמך הזה כולל:
- פורמטים נתמכים לאחסון: פירוט של תאימות בין פורמטים כמו Parquet, ORC, Avro, CSV ו-JSON ב-Hive SerDe ובמקורות נתונים של Spark.
- מיפוי של סוגי נתונים: כללי ההמרה המדויקים בין סוגי הנתונים של 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.
| פורמט | תחביר DDL של Spark SQL | אפשר להריץ שאילתות מ-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.
אפשר להריץ שאילתות על טבלאות SerDe בפורמטים CSV ו-JSON מ-BigQuery. עם זאת, טבלאות של מקור נתונים ב-Spark בפורמט CSV ו-JSON לא נתמכות.
| פורמט | תחביר DDL של Spark SQL | אפשר להריץ שאילתות מ-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. |