Lakehouse מספק יכולת פעולה הדדית עם BigQuery באמצעות תכונה שנקראת איחוד קטלוגים של BigQuery. התכונה הזו מאפשרת לכם לחשוף טבלאות שמנוהלות על ידי BigQuery, למשל טבלאות מנוהלות של Iceberg, למנועי קוד פתוח (OSS) חיצוניים כמו Apache Spark ו-Trino.
במקום ליצור מאגר ייעודי של קטלוג Lakehouse לאחסון מטא-נתונים, נקודת הקצה של קטלוג REST של Apache Iceberg פועלת רק כשער פרוקסי. כשמנועים חיצוניים מתחברים באמצעות הקידומת bq:// warehouse, השער מעביר את בקשות הקטלוג שלהם ישירות לקטלוג הפנימי של BigQuery.
כך תוכלו ליצור טבלאות ולנהל אותן ישירות ב-BigQuery באמצעות DDL או ממשקי API סטנדרטיים של BigQuery, וגם לתת למנועי OSS חיצוניים גישה לקריאה בלבד כדי להריץ שאילתות על הטבלאות האלה דרך נקודת הקצה של קטלוג REST.
איך פועל איחוד קטלוגים ב-BigQuery
פדרציית קטלוגים ב-BigQuery מאפשרת לכם לחשוף טבלאות ב-BigQuery – כמו טבלאות מנוהלות של Iceberg וטבלאות של BigQuery metastore – דרך קטלוג זמן הריצה של Lakehouse, נקודת הקצה של קטלוג Apache Iceberg REST.
תהליך האיחוד של קטלוג BigQuery פועל באופן הבא:
- יצירת טבלה בקטלוג BigQuery: יוצרים טבלה מנוהלת של Iceberg ב-BigQuery באמצעות הצהרות DDL. הטבלה הזו קיימת בקטלוג של BigQuery, היא כפופה לרשימות בקרת גישה (ACL) של BigQuery ופועלת כמשאב BigQuery REST.
- איחוד עם מחסן הנתונים של BigQuery מתוך קטלוג זמן הריצה של Lakehouse: באמצעות Lakehouse runtime catalog Apache Iceberg API בארכיטקטורת REST, אתם יכולים לאחד עם מחסן נתונים שצוין על ידי פורמט נתיב מחסן הנתונים
bq://projects/PROJECT_ID(או הגרסה האזורית,bq://projects/PROJECT_ID/locations/LOCATION). כך תוכלו לגשת לטבלה ב-BigQuery ממנועי חישוב כמו Apache Spark דרך Lakehouse API. בהגדרה הזו, תקבלו חוויה של קריאה בלבד מ-Spark, אבל חוויה של קריאה וכתיבה מ-BigQuery.
לתשומת ליבכם
מכיוון שפדרציית הקטלוגים של BigQuery לא יוצרת משאב ייעודי של קטלוג Lakehouse, מושגים והגדרות אחרים ברמת הקטלוג – כמו היררכיית המשאבים, האזורים של הדלי והקטלוג ומבנה השמות בן ארבעת החלקים P.C.N.T – לא רלוונטיים לשיטה הזו. ב-API הבסיסי, הערך הזה תואם להגדרה
CATALOG_TYPE_BIGQUERY. שימו לב: אין תמיכה בהענקת הרשאות גישה לאחסון (הקצאת פרטי כניסה) בקטלוגים מאוחדים של BigQuery.איחוד קטלוגים ב-BigQuery שונה מיכולת הגישה לנתונים בין עננים של borderless Lakehouse. בעוד שפדרציית הקטלוג של BigQuery חושפת טבלאות של Google Cloud למנועי OSS חיצוניים, Lakehouse מקשרת את Google Cloud לקטלוגים חיצוניים מרוחקים, כמו Databricks Unity Catalog, כדי לשלוח שאילתות לנתונים שמאוחסנים אצל ספקי ענן אחרים ישירות מ-BigQuery וממנועי OSS בלי להעביר נתונים. מידע נוסף על תהליך העבודה הזה זמין במאמר מידע על גישה לנתונים חוצת-עננים.
השוואה לטבלאות שמנוהלות על ידי נקודת הקצה של קטלוג REST של Apache Iceberg
איחוד הקטלוגים ב-BigQuery שונה מתהליכי עבודה שבהם קטלוג זמן הריצה של Lakehouse משתמש בנקודת הקצה של קטלוג REST של Apache Iceberg בדרכים הבאות:
- ניהול משאבים ואחסון קטלוגים: טבלאות מאוחדות נמצאות בקטלוג BigQuery כמשאבי BigQuery REST, והקטלוג של זמן הריצה של Lakehouse משמש כשער פרוקסי. כשקטלוג זמן הריצה של Lakehouse משתמש בנקודת הקצה של קטלוג REST של Apache Iceberg, הטבלאות מאוחסנות ישירות בקטלוג כמשאבי REST של Lakehouse.
- בקרת גישה: טבלאות מאוחדות משתמשות בהרשאות IAM וב-ACL של BigQuery. כשקטלוג זמן הריצה של Lakehouse משתמש בנקודת הקצה של קטלוג Apache Iceberg REST, הטבלאות משתמשות ברשימות ACL של Lakehouse.
- יכולות קריאה וכתיבה של המנוע: טבלאות מאוחדות מספקות גישת קריאה וכתיבה דרך BigQuery, אבל גישת קריאה בלבד ממנועים חיצוניים כמו Spark. כשמשתמשים בנקודת הקצה של קטלוג REST של Apache Iceberg בקטלוג של Lakehouse runtime, הטבלאות תומכות בפעולות קריאה וכתיבה גם מ-API של BigQuery וגם ממנועים חיצוניים כמו Spark.
לפני שמתחילים
-
מפעילים את BigLake API, אם הוא עדיין לא מופעל.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לשימוש בפדרציית קטלוגים ב-BigQuery, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
קריאת משאבים בקטלוג ושליחת שאילתות לנתונים בטבלה:
- BigLake Viewer (
roles/biglake.viewer) בפרויקט - צפייה באובייקט אחסון (
roles/storage.objectViewer) בקטגוריה של Cloud Storage
- BigLake Viewer (
-
ביצוע פעולות בשפת הטיפול בנתונים (DML) באמצעות איחוד קטלוגים ב-BigQuery:
- BigQuery Data Editor (
roles/bigquery.dataEditor) on the project - אדמין לניהול נפח האחסון (
roles/storage.admin) בקטגוריה של Cloud Storage. אם אתם משתמשים במנועי שאילתות כמו Managed Service for Apache Spark כדי לבצע פעולות DML, אתם צריכים להעניק את התפקידים האלה לחשבון השירות שבו אתם משתמשים כדי להריץ משימות במנוע הזה.
- BigQuery Data Editor (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הגדרת פדרציה של קטלוג BigQuery
כדי להפעיל את הפדרציה של קטלוג BigQuery, צריך להגדיר את הלקוח (כמו Apache Spark או Trino) עם פורמט מחסן הנתונים bq://projects/PROJECT_ID בשדה WAREHOUSE_PATH בדוגמאות להגדרת הלקוח במאמר הגדרת אפליקציית לקוח.
אפשר גם לבחור לכלול מיקום ב-BigQuery כדי להגביל בקשות עתידיות למיקום יחיד באמצעות הפורמט bq://projects/PROJECT_ID/locations/LOCATION.
מכיוון שהמשאבים האלה מנוהלים על ידי BigQuery, צריך לוודא שיש לכם את ההרשאות הנדרשות.
יצירת מרחבי שמות לטבלאות מאוחדות
אחרי שמגדירים את הלקוח לאיחוד קטלוגים של BigQuery, אפשר ליצור מרחב שמות לטבלאות המאוחדות.
Spark
כדי להשתמש בחיפוש מאוחד של קטלוגים ב-BigQuery, צריך לכלול את הסעיפים LOCATION ו-DBPROPERTIES:
spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME LOCATION 'gs://BUCKET_NAME/NAMESPACE_NAME' WITH DBPROPERTIES ('gcp-region' = 'LOCATION');") spark.sql("USE NAMESPACE_NAME;")
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE_NAME: שם למרחב השמות. -
BUCKET_NAME: קטגוריית Cloud Storage שבה אתם משתמשים עם הקטלוג. -
LOCATION: מיקום ב-BigQuery. ערך ברירת המחדל הואUSבמספר אזורים.
Trino
כדי להשתמש ב-BigQuery catalog federation, צריך לכלול את המאפיינים LOCATION ו-gcp-region:
CREATE SCHEMA IF NOT EXISTS CATALOG_NAME.SCHEMA_NAME WITH ( LOCATION = 'gs://BUCKET_NAME/SCHEMA_NAME', "gcp-region" = 'LOCATION'); USE CATALOG_NAME.SCHEMA_NAME;
מחליפים את מה שכתוב בשדות הבאים:
-
CATALOG_NAME: השם של קטלוג Trino באמצעות נקודת הקצה של קטלוג REST של Apache Iceberg. -
SCHEMA_NAME: שם הסכימה. -
BUCKET_NAME: קטגוריית Cloud Storage שבה אתם משתמשים עם הקטלוג. -
LOCATION: מיקום ב-BigQuery. ערך ברירת המחדל הואUSבמספר אזורים.
שליחת שאילתות לטבלאות מאוחדות ב-BigQuery
טבלאות שיוצרים בקטלוג מאוחד גלויות ב-BigQuery ואפשר להריץ עליהן שאילתות ישירות באמצעות SQL סטנדרטי של BigQuery (בלי צורך בשם P.C.N.T בן ארבעה חלקים):
SELECT * FROM `NAMESPACE_NAME.TABLE_NAME`;
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE_NAME: השם של מרחב השמות. -
TABLE_NAME: שם הטבלה.
המאמרים הבאים
- איך מנהלים קטלוגים ב Google Cloud מסוף
- מידע נוסף על טבלאות Apache Iceberg שנתמכות בקטלוג של Lakehouse בזמן ריצה