Lakehouse for Apache Iceberg מספק יכולת פעולה הדדית עם BigQuery באמצעות תכונה שנקראת BigQuery catalog federation. התכונה הזו מאפשרת לכם לחשוף טבלאות שמנוהלות על ידי 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 for Apache Iceberg API. בהגדרה הזו, תקבלו חוויה של קריאה בלבד מ-Spark, אבל חוויה של קריאה וכתיבה מ-BigQuery.
לתשומת ליבכם
מכיוון שפדרציית קטלוגים ב-BigQuery לא יוצרת משאב קטלוג ייעודי של Lakehouse, מושגים והגדרות אחרים ברמת הקטלוג – כמו היררכיית המשאבים, אזורי הדלי והקטלוג ומבנה השמות בן ארבעת החלקים P.C.N.T – לא רלוונטיים לשיטה הזו. ב-API הבסיסי, הערך הזה תואם להגדרה
CATALOG_TYPE_BIGQUERY. שימו לב: אי אפשר להשתמש בהענקת הרשאות גישה לאחסון (הקצאת פרטי כניסה) בקטלוגים מאוחדים של BigQuery.איחוד הקטלוגים של BigQuery שונה מLakehouse חוצה-ענן. בעוד שפדרציית קטלוגים של BigQuery חושפת טבלאות של Google Cloud למנועי OSS חיצוניים, Lakehouse חוצה עננים מחבר את Google Cloud לקטלוגים חיצוניים מרוחקים, כמו Databricks Unity Catalog, כדי לשלוח שאילתות לנתונים שמאוחסנים אצל ספקי ענן אחרים ישירות מ-BigQuery וממנועי OSS בלי להעביר נתונים. מידע נוסף על תהליך העבודה הזה זמין במאמר מידע על Lakehouse חוצה-ענן.
השוואה לטבלאות שמנוהלות על ידי נקודת הקצה של קטלוג REST של Apache Iceberg
איחוד הקטלוג של BigQuery שונה מתהליכי עבודה שבהם קטלוג זמן הריצה של Lakehouse משתמש בנקודת הקצה של קטלוג REST של Apache Iceberg בדרכים הבאות:
- ניהול משאבים ואחסון קטלוגים: טבלאות מאוחדות נמצאות בקטלוג BigQuery כמשאבי BigQuery REST, והקטלוג של זמן הריצה של Lakehouse משמש כשער פרוקסי. כשקטלוג זמן הריצה של Lakehouse משתמש בנקודת הקצה של קטלוג REST של Apache Iceberg, הטבלאות מאוחסנות ישירות בקטלוג כמשאבי REST של Lakehouse for Apache Iceberg.
- בקרת גישה: טבלאות מאוחדות משתמשות בהרשאות IAM וב-ACL של BigQuery. כשקטלוג זמן הריצה של Lakehouse משתמש בנקודת הקצה של קטלוג REST של Apache Iceberg, הטבלאות משתמשות ברשימות ACL של Lakehouse for Apache Iceberg.
- יכולות קריאה וכתיבה של המנוע: טבלאות מאוחדות מספקות גישת קריאה וכתיבה דרך BigQuery, אבל גישת קריאה בלבד ממנועים חיצוניים כמו Spark. כשקטלוג זמן הריצה של Lakehouse משתמש בנקודת הקצה של קטלוג Apache Iceberg REST, הטבלאות תומכות בפעולות קריאה וכתיבה גם מ-API של BigQuery וגם ממנועים חיצוניים כמו Spark.
לפני שמתחילים
-
מפעילים את BigLake API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לשימוש בפדרציית קטלוגים ב-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 באמצעות נקודת הקצה של קטלוג Apache Iceberg REST. -
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 בזמן הריצה