הקטלוג הייעודי לזמן ריצה של Lakehouse מאפשר ליצור טבלאות Apache Iceberg ב-Cloud Storage, שאפשר לשלוח אליהן שאילתות ולשנות אותן ב-BigQuery, ב-Apache Spark, ב-Trino וב-Iceberg API בארכיטקטורת REST. כשיוצרים טבלה בלי לציין נתיב אחסון מפורש, הקטלוג הייעודי לזמן ריצה של Lakehouse ממקם באופן אוטומטי את ספריות הנתונים והמטא-נתונים שלו במיקום ברירת המחדל של נקודת הקצה של הקטלוג ב-Cloud Storage, על ידי הוספת המזהים של מרחב השמות והטבלה.
כדי לרשום טבלת Apache Iceberg קיימת בלי ליצור ספריות אחסון חדשות, קראו את המאמר רישום טבלה.
לפני שמתחילים
-
מפעילים את BigLake API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים? - מגדירים את הקטלוג הייעודי לזמן ריצה של Lakehouse עם נקודת הקצה (endpoint) של קטלוג REST של Apache Iceberg. כדי להפעיל ניהול טבלאות אוטומטי, צריך לוודא שהקטלוג משתמש במצב הנפקת פרטי כניסה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת טבלה, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM בפרויקט ובקטגוריית האחסון:
-
יוצרים טבלה:
- אדמין של BigLake (
roles/biglake.admin) – הפרויקט שלכם - אדמין של אחסון (
roles/storage.admin) – קטגוריית היעד של Cloud Storage
- אדמין של BigLake (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
אם נקודת הקצה של הקטלוג משתמשת במצב הפצת פרטי כניסה, והקטגוריות של Cloud Storage מוגנות על ידי גבולות גזרה לשירות של VPC Service Controls, צריך גם להגדיר כלל תעבורת נתונים נכנסת (ingress) לחשבון השירות של נקודת הקצה של הקטלוג לפני שיוצרים טבלאות. מידע נוסף זמין במאמר שימוש ב-VPC Service Controls עם הנפקת פרטי כניסה.
יכולות ותמיכה בטבלאות
כשמשתמשים בטבלאות בקטלוג הייעודי לזמן ריצה של Lakehouse, כדאי להבין את סוגי הטבלאות השונים ואת יכולות ההצטרפות שלהם. למידע נוסף על השימוש בטבלאות Apache Iceberg, קראו את סקירה כללית על טבלאות Apache Iceberg.
טבלאות Iceberg נתמכות
יש תמיכה רק בטבלאות Apache Iceberg V2 (GA) ו-V3 (גרסת טרום-השקה (Preview)). אין תמיכה בטבלאות Iceberg V1. כדי לשדרג טבלאות קיימות בגרסה 1, קראו את המאמר שדרוג טבלאות Iceberg מגרסה 1 לגרסה 2.
שימוש באפשרויות של הטבלה (גרסת טרום-השקה)
כדי להשתמש ביכולות המנוהלות של BigQuery, כמו שפת הטיפול בנתונים (DML) של BigQuery וניהול אוטומטי של טבלאות, אתם יכולים להגדיר מאפייני טבלה ספציפיים. התכונות האלה מופעלות בדרכים שונות, בהתאם למקום שבו הטבלה נוצרה:
- מ-BigQuery: כברירת מחדל, מופעלים BigQuery DML וניהול אוטומטי של טבלאות.
- ממנועי קוד פתוח: כדי להצטרף, צריך להגדיר במפורש את מאפייני הטבלה. מידע נוסף מופיע בקטע הגדרת אפשרויות הטבלה.
צור טבלה
יוצרים טבלת Iceberg. כדי להפעיל ניהול טבלאות אוטומטי (gcp.biglake.table-management.enabled), צריך להשתמש בקטלוג במצב הפצת פרטי כניסה.
המסוף
במסוף Google Cloud , נכנסים לדף Lakehouse.
בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם אחד.
בוחרים מרחב שמות קיים או יוצרים אחד אם אין לכם.
בסרגל התפריטים, לוחצים על + יצירת טבלה.
בשדה Table format, בוחרים באפשרות Iceberg.
בקטע Table name, מזינים שם ייחודי לטבלה.
אופציונלי: בקטע מאפיינים, מגדירים את מאפייני הטבלה. בקטע הזה מפורטים מאפיינים מוגדרים מראש כמו
gcp.biglake.bigquery-dml.enabledו-gcp.biglake.table-management.enabled.לדוגמה, אפשר לשנות את הערכים האלה ל-
trueכדי להפעיל את BigQuery DML או את ניהול הטבלאות. ניהול הטבלאות מבצע משימות ברקע, כמו דחיסה ותפוגה של תמונת מצב. מידע נוסף זמין במאמר הגדרת אפשרויות הטבלה.לוחצים על יצירה.
הטבלה מופיעה בדף Namespace details.
Spark
spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")
מחליפים את הערכים הבאים:
-
NAMESPACE_NAME: השם של מרחב השמות. -
TABLE_NAME: שם לטבלה.
כדי להפעיל יכולת פעולה הדדית של קריאה/כתיבה וניהול טבלאות (תצוגה מקדימה), מוסיפים את המאפיינים לסעיף TBLPROPERTIES:
TBLPROPERTIES (
'gcp.biglake.bigquery-dml.enabled' = true,
'gcp.biglake.table-management.enabled' = true
)
Trino
CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);
מחליפים את הערכים הבאים:
-
SCHEMA_NAME: השם של הסכימה. -
TABLE_NAME: שם לטבלה.
כדי להפעיל יכולת פעולה הדדית של קריאה/כתיבה וניהול טבלאות (תצוגה מקדימה), מוסיפים את המאפיינים הבאים לסעיף WITH:
WITH (
"gcp.biglake.bigquery-dml.enabled" = 'true',
"gcp.biglake.table-management.enabled" = 'true'
)
gcloud
כדי ליצור טבלה באמצעות Google Cloud CLI, מריצים את הפקודה gcloud biglake iceberg tables create:
gcloud biglake iceberg tables create \
--project="PROJECT_ID" \
--catalog="CATALOG_ID" \
--namespace="NAMESPACE_NAME" \
--create-from-file="TABLE_DEFINITION_FILE"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud. -
CATALOG_ID: מזהה הקטלוג. -
NAMESPACE_NAME: השם של מרחב השמות של הקטלוג. -
TABLE_DEFINITION_FILE: הנתיב לקובץ JSON שמכיל את הגדרת הטבלה של Iceberg.
BigQuery
כדי ליצור טבלת Apache Iceberg בקטלוג הייעודי לזמן ריצה של Lakehouse מ-BigQuery, משתמשים בהצהרת GoogleSQL CREATE TABLE הבאה. כשיוצרים טבלה מ-BigQuery, ניהול הטבלה ו-DML של BigQuery מופעלים כברירת מחדל. כדי להשתמש בניהול טבלאות אוטומטי, הקטלוג צריך להשתמש במצב הפצת פרטי כניסה.
CREATE TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` (id int, data string);
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CATALOG_ID: מזהה הקטלוג הייעודי לזמן ריצה ב-Lakehouse. -
NAMESPACE: השם של מרחב השמות של Iceberg. -
TABLE_NAME: שם לטבלת Iceberg.
REST
כדי ליצור טבלת Iceberg באמצעות ה-API בארכיטקטורת REST, שולחים בקשת POST לנקודת הקצה CreateIcebergTable:
POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables
גוף הבקשה חייב להכיל מטען ייעודי (payload) תקין של Iceberg CreateTableRequest בפורמט JSON, שמגדיר את סכימת הטבלה, את מפרט המחיצה ואת המאפיינים הראשוניים.
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CATALOG_ID: מזהה הקטלוג. -
NAMESPACE_NAME: השם של מרחב השמות של הקטלוג.