שאילתות בפורמטים של טבלאות פתוחות באמצעות קובצי מניפסט
במאמר הזה מוסבר איך להשתמש בקובצי מניפסט כדי לשלוח שאילתות לנתונים שמאוחסנים בפורמטים של טבלאות בקוד פתוח, כמו Apache Hudi ו-Delta Lake.
חלק מהפורמטים של טבלאות בקוד פתוח, כמו Hudi ו-Delta Lake, מייצאים את המצב הנוכחי שלהם כקובץ מניפסט אחד או יותר. קובץ מניפסט מכיל רשימה של קובצי נתונים שיוצרים טבלאות. התמיכה במניפסט ב-BigQuery מאפשרת לשלוח שאילתות ולטעון נתונים שמאוחסנים בפורמטים של טבלאות פתוחות.
לפני שמתחילים
מפעילים את ממשקי ה-API של BigQuery Connection, BigQuery Reservation ו-BigLake.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםכדי ליצור טבלאות BigLake, אפשר להריץ את פקודות Spark באחת מהשיטות הבאות:
יצירת אשכול של Managed Service for Apache Spark. כדי לשלוח שאילתות לטבלאות Hudi, מגדירים את השדה
--optional-componentsלערךHUDI. כדי לשלוח שאילתות לטבלאות Delta, מגדירים את--optional-componentsל-Presto.שימוש בתהליך מאוחסן ל-Spark ב-BigQuery. כדי לעשות זאת:
כדי לאחסן את קובץ המניפסט ב-Cloud Storage, צריך ליצור קטגוריה של Cloud Storage. כדי לגשת לקובץ המניפסט, צריך להתחבר לקטגוריה של Cloud Storage. כדי לעשות זאת:
התפקידים הנדרשים
כדי להריץ שאילתות על טבלאות BigLake שמבוססות על נתוני Hudi ו-Delta Lake, צריך לוודא שיש לכם את התפקידים הבאים:
- משתמש עם הרשאת גישה לחיבור BigQuery (
roles/bigquery.connectionUser) - צפייה בנתוני BigQuery (
roles/bigquery.dataViewer) - משתמש BigQuery (
roles/bigquery.user)
אפשר גם להריץ שאילתות על טבלאות חיצוניות של Hudi. עם זאת, מומלץ לשדרג את הטבלה החיצונית ל-BigLake. כדי להריץ שאילתות על טבלאות חיצוניות של Hudi, צריך לוודא שיש לכם את התפקידים הבאים:
- צפייה בנתוני BigQuery (
roles/bigquery.dataViewer) - משתמש BigQuery (
roles/bigquery.user) - צפייה באובייקטים באחסון (
roles/storage.objectViewer)
בהתאם להרשאות שלכם, אתם יכולים להקצות לעצמכם את התפקידים האלה או לבקש מהאדמין להקצות אותם לכם. מידע נוסף על הקצאת תפקידים זמין במאמר איך בודקים אילו תפקידים אפשר לתת במשאבים.
כדי לראות את ההרשאות הנדרשות לשליחת שאילתות לטבלאות BigLake, מרחיבים את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
bigquery.connections.usebigquery.jobs.createbigquery.readsessions.create(נדרש רק אם קוראים נתונים באמצעות BigQuery Storage Read API)bigquery.tables.getbigquery.tables.getData
יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
שאילתות של עומסי עבודה ב-Hudi
כדי להריץ שאילתות על נתוני Hudi, פועלים לפי השלבים הבאים:
- יצירת טבלה חיצונית על סמך נתוני Hudi.
- משדרגים את הטבלה החיצונית ל-BigLake.
יצירת טבלאות חיצוניות של Hudi
כשמסנכרנים טבלאות באמצעות כלי הסנכרון של Hudi ו-BigQuery, צריך להפעיל את הדגל use-bq-manifest-file כדי לעבור לגישה של קובץ המניפסט. הדגל הזה גם מייצא קובץ מניפסט בפורמט שנתמך על ידי BigQuery, ומשתמש בו כדי ליצור טבלה חיצונית עם השם שצוין בפרמטר --table.
כדי ליצור טבלת Hudi חיצונית, פועלים לפי השלבים הבאים:
כדי ליצור טבלת Hudi חיצונית, צריך לשלוח משימה לאשכול קיים של Managed Service for Apache Spark. כשיוצרים את המחבר Hudi-BigQuery, צריך להפעיל את הדגל
use-bq-manifest-fileכדי לעבור לגישה של קובץ המניפסט. הדגל הזה מייצא קובץ מניפסט בפורמט שנתמך על ידי BigQuery, ומשתמש בו כדי ליצור טבלה חיצונית עם השם שצוין בפרמטר--table.spark-submit \ --master yarn \ --packages com.google.cloud:google-cloud-bigquery:2.10.4 \ --class org.apache.hudi.gcp.bigquery.BigQuerySyncTool \ JAR \ --project-id PROJECT_ID \ --dataset-name DATASET \ --dataset-location LOCATION \ --table TABLE \ --source-uri URI \ --source-uri-prefix URI_PREFIX \ --base-path BASE_PATH \ --partitioned-by PARTITION_BY \ --use-bq-manifest-file
מחליפים את מה שכתוב בשדות הבאים:
JAR: אם אתם משתמשים במחבר Hudi-BigQuery, מצייניםhudi-gcp-bundle-0.14.0.jar. אם אתם משתמשים ברכיב Hudi ב-Managed Service for Apache Spark 2.1, צריך לציין/usr/lib/hudi/tools/bq-sync-tool/hudi-gcp-bundle-0.12.3.1.jar
PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את טבלת Hudi BigLake
DATASET: מערך הנתונים שבו רוצים ליצור את טבלת Hudi BigLake.
LOCATION: המיקום שבו רוצים ליצור את טבלת Hudi BigLake
TABLE: השם של הטבלה שרוצים ליצוראם אתם עוברים מגרסה קודמת של מחבר Hudi-BigQuery (גרסה 0.13.0 ומטה) שיצרה תצוגות (Views) בקובצי המניפסט, חשוב לוודא שאתם משתמשים באותו שם טבלה, כי כך תוכלו לשמור את קוד הצינור הקיים במורד הזרם.
URI: ה-URI של Cloud Storage שיצרתם כדי לאחסן את קובץ המניפסט של Hudiה-URI הזה מצביע על המחיצה ברמה הראשונה. חשוב לכלול את מפתח המחיצה. לדוגמה,
gs://mybucket/hudi/mydataset/EventDate=*
URI_PREFIX: התחילית של נתיב ה-URI של Cloud Storage, בדרך כלל זה הנתיב לטבלאות Hudi
BASE_PATH: נתיב הבסיס לטבלאות Hudiלדוגמה,
gs://mybucket/hudi/mydataset/
PARTITION_BY: ערך המחיצהלדוגמה,
EventDate
למידע נוסף על הגדרת המחבר, ראו מחבר Hudi-BigQuery.
כדי להגדיר אמצעי בקרה מתאימים ברמת הגרנולריות או כדי לשפר את הביצועים באמצעות הפעלת שמירת מטא-נתונים במטמון, אפשר לעיין במאמר שדרוג טבלאות BigLake.
שאילתות של עומסי עבודה של Delta
יש עכשיו תמיכה מקורית בטבלאות דלתא. מומלץ ליצור טבלאות Delta BigLake לעומסי עבודה של Delta. טבלאות Delta Lake BigLake תומכות בטבלאות Delta Lake מתקדמות יותר, כולל טבלאות עם מיפוי מחדש של עמודות ווקטורים של מחיקות. בנוסף, טבלאות Delta BigLake קוראות ישירות את תמונת המצב העדכנית ביותר, כך שהעדכונים זמינים באופן מיידי.
כדי להריץ שאילתות על עומסי עבודה של Delta, פועלים לפי השלבים הבאים:
- יוצרים קובץ מניפסט.
- יוצרים טבלת BigLake על סמך קובץ המניפסט.
- כדי לשפר את הביצועים, אפשר להגדיר אמצעי בקרה מתאימים ברמת פירוט גבוהה או להפעיל שמירת מטמון של מטא-נתונים. למידע נוסף, אפשר לעיין במאמר בנושא שדרוג טבלאות BigLake.
יצירת קובץ מניפסט
BigQuery תומך בקובץ המניפסט בפורמט SymLinkTextInputFormat, שהוא רשימה של כתובות URI שמופרדות בשורות חדשות. מידע נוסף על יצירת קובץ מניפסט זמין במאמר הגדרת שילוב של Presto עם Delta Lake ושאילתות בטבלאות Delta.
כדי ליצור קובץ מניפסט, שולחים משימה לאשכול קיים של Managed Service for Apache Spark:
SQL
מריצים את הפקודה הבאה בטבלת Delta במיקום path-to-delta-table באמצעות Spark:
GENERATE symlink_format_manifest FOR TABLE delta.`<path-to-delta-table>`
Scala
מריצים את הפקודה הבאה בטבלת Delta במיקום path-to-delta-table באמצעות Spark:
val deltaTable = DeltaTable.forPath(<path-to-delta-table>)
deltaTable.generate("symlink_format_manifest")
Java
מריצים את הפקודה הבאה בטבלת Delta במיקום path-to-delta-table באמצעות Spark:
DeltaTable deltaTable = DeltaTable.forPath(<path-to-delta-table>);
deltaTable.generate("symlink_format_manifest");
Python
מריצים את הפקודה הבאה בטבלת Delta במיקום path-to-delta-table באמצעות Spark:
deltaTable = DeltaTable.forPath(<path-to-delta-table>)
deltaTable.generate("symlink_format_manifest")
יצירת טבלאות Delta BigLake
כדי ליצור טבלת Delta BigLake, משתמשים בהצהרת CREATE EXTERNAL TABLE עם השדה file_set_spec_type שמוגדר לערך NEW_LINE_DELIMITED_MANIFEST:
עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה
CREATE EXTERNAL TABLE:CREATE EXTERNAL TABLE PROJECT_ID.DATASET_NAME.TABLE_NAME WITH PARTITION COLUMNS( `PARTITION_COLUMN PARTITION_COLUMN_TYPE`,) WITH CONNECTION `PROJECT_IDREGION.CONNECTION_NAME` OPTIONS ( format = "DATA_FORMAT", uris = ["URI"], file_set_spec_type = 'NEW_LINE_DELIMITED_MANIFEST', hive_partition_uri_prefix = "PATH_TO_DELTA_TABLE" max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE');
מחליפים את מה שכתוב בשדות הבאים:
-
DATASET_NAME: השם של מערך הנתונים שיצרתם TABLE_NAME: השם שרוצים לתת לטבלה-
REGION: המיקום שבו נמצא החיבור (לדוגמה,us-east1) -
CONNECTION_NAME: השם של החיבור שיצרתם -
DATA_FORMAT: כל אחד מהפורמטים הנתמכים (למשלPARQUET) -
URI: הנתיב לקובץ המניפסט (לדוגמה,gs://mybucket/path) -
PATH_TO_DELTA_TABLE: קידומת משותפת לכל מזהי ה-URI של המקור לפני שמתחיל קידוד מפתח החלוקה -
STALENESS_INTERVAL: מציין אם פעולות בטבלת BigLake משתמשות במטא-נתונים שנשמרו במטמון, ומה מידת העדכניות של המטא-נתונים שנשמרו במטמון שנדרשת כדי שהפעולה תשתמש בהם. מידע נוסף על שיקולים לגבי שמירת מטא-נתונים במטמון זמין במאמר שמירת מטא-נתונים במטמון לשיפור הביצועים.כדי להשבית את השמירה במטמון של המטא-נתונים, מציינים את הערך 0. (זוהי ברירת המחדל)
כדי להפעיל שמירת מטא-נתונים במטמון, צריך לציין ערך של מרווח זמן בין 30 דקות ל-7 ימים. לדוגמה, כדי להגדיר את מרווח הזמן של הנתונים הלא עדכניים ל-4 שעות, מציינים
INTERVAL 4 HOUR. אם הערך הזה מוגדר, פעולות שמתבצעות בטבלה משתמשות במטא נתונים ששמורים במטמון, אם הם רעננו ב-4 השעות האחרונות. אם המטא-נתונים שבזיכרון המטמון ישנים יותר, הפעולה מאחזרת מטא-נתונים מ-Delta Lake במקום זאת. -
CACHE_MODE: מציין אם המטמון של המטא-נתונים מתרענן באופן אוטומטי או ידני. מידע נוסף על שיקולים לגבי שמירת מטא-נתונים במטמון זמין במאמר שמירת מטא-נתונים במטמון לשיפור הביצועים.אם מגדירים את הערך
AUTOMATIC, מטמון המטא-נתונים מתעדכן במרווח זמן שמוגדר על ידי המערכת, בדרך כלל בין 30 ל-60 דקות.מגדירים את הערך
MANUALאם רוצים לרענן את מטמון המטא-נתונים לפי לוח זמנים שקובעים. במקרה כזה, אפשר להתקשר אלBQ.REFRESH_EXTERNAL_METADATA_CACHEמערכת ההליכים כדי לרענן את המטמון.אם הערך של
STALENESS_INTERVALגדול מ-0, צריך להגדיר אתCACHE_MODE.
דוגמה:
CREATE EXTERNAL TABLE mydataset.mytable WITH CONNECTION `us-east1.myconnection` OPTIONS ( format="PARQUET", uris=["gs://mybucket/path/partitionpath=*"], file_set_spec_type = 'NEW_LINE_DELIMITED_MANIFEST' hive_partition_uri_prefix = "gs://mybucket/path/" max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
-
שדרוג טבלאות BigLake
אתם יכולים גם לשפר את הביצועים של עומסי העבודה באמצעות שמירת מטא-נתונים במטמון ותצוגות חומריות. אם רוצים להשתמש במטמון של מטא-נתונים, אפשר לציין הגדרות לכך באותו הזמן. כדי לקבל פרטים על הטבלה, כמו פורמט המקור ו-URI המקור, אפשר לעיין במאמר בנושא קבלת מידע על טבלה.
כדי לעדכן טבלה חיצונית לטבלת BigLake או לעדכן טבלת BigLake קיימת, בוחרים באחת מהאפשרויות הבאות:
SQL
כדי לעדכן טבלה, משתמשים בCREATE OR REPLACE EXTERNAL TABLE הצהרת DDL:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
CREATE OR REPLACE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH CONNECTION {`REGION.CONNECTION_ID` | DEFAULT} OPTIONS( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE' );
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: השם של הפרויקט שמכיל את הטבלה -
DATASET: השם של מערך הנתונים שמכיל את הטבלה -
EXTERNAL_TABLE_NAME: השם של הטבלה -
REGION: האזור שמכיל את החיבור -
CONNECTION_ID: השם של החיבור שרוצים להשתמש בוכדי להשתמש ב חיבור שמוגדר כברירת מחדל, מציינים
DEFAULTבמקום מחרוזת החיבור שמכילהREGION.CONNECTION_ID. -
TABLE_FORMAT: הפורמט שבו הטבלה משתמשתאי אפשר לשנות את ההגדרה הזו כשמעדכנים את הטבלה.
-
BUCKET_PATH: הנתיב לקטגוריית Cloud Storage שמכילה את הנתונים של הטבלה החיצונית, בפורמט['gs://bucket_name/[folder_name/]file_name'].אפשר לבחור כמה קבצים מהמאגר על ידי ציון כוכבית אחת (
*) כתו כללי בנתיב. לדוגמה,['gs://mybucket/file_name*']. מידע נוסף זמין במאמר תמיכה בתווים כלליים בכתובות URI של Cloud Storage.אפשר לציין כמה דליים לאפשרות
urisעל ידי ציון כמה נתיבים.בדוגמאות הבאות מוצגים ערכים תקינים של
uris:['gs://bucket/path1/myfile.csv']['gs://bucket/path1/*.csv']['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
כשמציינים
urisערכים שמטרגטים כמה קבצים, לכל הקבצים האלה צריכה להיות סכימה תואמת.מידע נוסף על שימוש בכתובות URI של Cloud Storage ב-BigQuery זמין במאמר בנושא נתיב משאב של Cloud Storage.
-
STALENESS_INTERVAL: מציין אם פעולות שמתבצעות בטבלה משתמשות במטא-נתונים ששמורים במטמון, ומה רמת העדכניות של המטא-נתונים ששמורים במטמון שנדרשת כדי שהפעולה תוכל להשתמש בהם.מידע נוסף על שיקולים לגבי שמירת מטא-נתונים במטמון זמין במאמר שמירת מטא-נתונים במטמון לשיפור הביצועים.
כדי להשבית את השמירה במטמון של המטא-נתונים, מציינים את הערך 0. (זוהי ברירת המחדל)
כדי להפעיל שמירת מטא-נתונים במטמון, צריך לציין ערך של מרווח זמן בין 30 דקות ל-7 ימים. לדוגמה, כדי להגדיר את מרווח הזמן של הנתונים הלא עדכניים ל-4 שעות, מציינים
INTERVAL 4 HOUR. אם הערך הזה מוגדר, פעולות שמתבצעות בטבלה משתמשות במטא נתונים ששמורים במטמון, אם הם רעננו ב-4 השעות האחרונות. אם המטא-נתונים שבמטמון ישנים יותר, הפעולה מאחזרת מטא-נתונים מ-Cloud Storage במקום זאת. -
CACHE_MODE: מציין אם המטמון של המטא-נתונים מתרענן באופן אוטומטי או ידנימידע נוסף על שיקולים בנוגע לשמירה במטמון של מטא-נתונים זמין במאמר שמירה במטמון של מטא-נתונים לשיפור הביצועים.
אם מגדירים את הערך
AUTOMATIC, מטמון המטא-נתונים מתעדכן במרווח זמן שמוגדר על ידי המערכת, בדרך כלל בין 30 ל-60 דקות.מגדירים את הערך
MANUALאם רוצים לרענן את מטמון המטא-נתונים לפי לוח זמנים שקובעים. במקרה כזה, אפשר להתקשר אלBQ.REFRESH_EXTERNAL_METADATA_CACHEמערכת ההליכים כדי לרענן את המטמון.אם הערך של
STALENESS_INTERVALגדול מ-0, צריך להגדיר אתCACHE_MODE.
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
כדי לעדכן טבלה, משתמשים בפקודות bq mkdef ו-bq update:
ליצור הגדרה של טבלה חיצונית שמתארת את ההיבטים של הטבלה שרוצים לשנות:
bq mkdef --connection_id=PROJECT_ID.REGION.CONNECTION_ID \ --source_format=TABLE_FORMAT \ --metadata_cache_mode=CACHE_MODE \ "BUCKET_PATH" > /tmp/DEFINITION_FILE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: השם של הפרויקט שמכיל את החיבור -
REGION: האזור שמכיל את החיבור -
CONNECTION_ID: השם של החיבור שרוצים להשתמש בו -
TABLE_FORMAT: הפורמט שבו נעשה שימוש בטבלה. אי אפשר לשנות את ההגדרה הזו כשמעדכנים את הטבלה.
CACHE_MODE: מציין אם מטמון המטא-נתונים מתרענן באופן אוטומטי או ידני. מידע נוסף על שיקולים בנוגע לשמירת מטא-נתונים במטמון זמין במאמר שמירת מטא-נתונים במטמון לשיפור הביצועים.אם מגדירים את הערך
AUTOMATIC, מטמון המטא-נתונים מתרענן במרווח זמן שמוגדר על ידי המערכת, בדרך כלל בין 30 ל-60 דקות.מגדירים את הערך
MANUALאם רוצים לרענן את מטמון המטא-נתונים לפי לוח זמנים שקובעים. במקרה כזה, אפשר להתקשר אלBQ.REFRESH_EXTERNAL_METADATA_CACHEמערכת ההליך כדי לרענן את המטמון.חובה להגדיר את
CACHE_MODEאם הערך שלSTALENESS_INTERVALגדול מ-0.
BUCKET_PATH: הנתיב לקטגוריית Cloud Storage שמכילה את הנתונים של הטבלה החיצונית, בפורמטgs://bucket_name/[folder_name/]file_name.כדי להגביל את הקבצים שנבחרו מהמאגר, מציינים כוכבית אחת (
*) בנתיב. לדוגמה,gs://mybucket/file_name*. מידע נוסף זמין במאמר בנושא תמיכה בתווים כלליים בכתובות URI של Cloud Storage.אפשר לציין כמה דליים לאפשרות
urisעל ידי ציון כמה נתיבים.בדוגמאות הבאות מוצגים ערכים תקינים של
uris:gs://bucket/path1/myfile.csvgs://bucket/path1/*.csvgs://bucket/path1/*,gs://bucket/path2/file00*
כשמציינים ערכים של
urisשמטרגטים כמה קבצים, לכל הקבצים האלה צריכה להיות סכימה תואמת.מידע נוסף על שימוש בכתובות URI של Cloud Storage ב-BigQuery זמין במאמר בנושא נתיב משאב ב-Cloud Storage.
DEFINITION_FILE: השם של קובץ הגדרת הטבלה שאתם יוצרים.
-
מעדכנים את הטבלה באמצעות ההגדרה החדשה של הטבלה החיצונית:
bq update --max_staleness=STALENESS_INTERVAL \ --external_table_definition=/tmp/DEFINITION_FILE \ PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME
מחליפים את מה שכתוב בשדות הבאים:
STALENESS_INTERVAL: מציין אם פעולות שמתבצעות בטבלה משתמשות במטא-נתונים שנשמרו במטמון, וכמה טריים צריכים להיות המטא-נתונים שנשמרו במטמון כדי שהפעולה תוכל להשתמש בהם. מידע נוסף על שיקולים בנוגע לשמירת מטא-נתונים במטמון זמין במאמר שמירת מטא-נתונים במטמון לשיפור הביצועים.כדי להשבית את השמירה במטמון של המטא-נתונים, מציינים את הערך 0. (זוהי ברירת המחדל)
כדי להפעיל שמירת מטא-נתונים במטמון, צריך לציין ערך של מרווח זמן בין 30 דקות ל-7 ימים, באמצעות הפורמט
Y-M D H:M:Sשמתואר במסמכי התיעוד של סוג הנתוניםINTERVAL. לדוגמה, מציינים0-0 0 4:0:0למרווח זמן של 4 שעות. אם הערך הזה מוגדר, פעולות שמתבצעות בטבלה משתמשות במטא נתונים שנשמרו במטמון אם הם רעננו ב-4 השעות האחרונות. אם המטא-נתונים שבמטמון ישנים יותר, הפעולה מאחזרת מטא-נתונים מ-Cloud Storage במקום זאת.
DEFINITION_FILE: השם של קובץ הגדרת הטבלה שיצרתם או עדכנתם.
PROJECT_ID: השם של הפרויקט שמכיל את הטבלה
DATASET: השם של מערך הנתונים שמכיל את הטבלה
EXTERNAL_TABLE_NAME: שם הטבלה
שליחת שאילתות לטבלאות BigLake ולטבלאות חיצוניות
אחרי שיוצרים טבלת BigLake, אפשר להריץ עליה שאילתות באמצעות תחביר GoogleSQL, בדיוק כמו בטבלת BigQuery רגילה.
לדוגמה, SELECT field1, field2 FROM mydataset.my_cloud_storage_table;.
מגבלות
BigQuery תומך רק בשליחת שאילתות לטבלאות Delta Lake reader v1.
השילוב של Hudi ו-BigQuery פועל רק בטבלאות
copy-on-writeמחולקות למחיצות בסגנון Hive.