כשיוצרים טבלה ב-Apache Iceberg, המטא-נתונים של הטבלה נרשמים במרחב שמות בקטלוג זמן הריצה של Lakehouse.
אם לא מציינים מיקום אחסון מפורש ברמת מרחב השמות או הטבלה במהלך יצירת הטבלה, המערכת יוצרת באופן אוטומטי את המטא-נתונים של הטבלה ואת ספריות הנתונים שלה במיקום ברירת המחדל של הקטלוג (שנגזר מקטגוריית הבסיס של Cloud Storage בקטלוג) על ידי צירוף המזהים של מרחב השמות והטבלה.
לפני שמתחילים
-
מפעילים את BigLake API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של שימוש בשירות' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים - מגדירים את קטלוג זמן הריצה של Lakehouse עם נקודת הקצה (endpoint) של קטלוג REST של Apache Iceberg.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת טבלה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט ובקטגוריית האחסון:
-
הכול:
- אדמין BigLake (
roles/biglake.admin) – הפרויקט שלכם - אדמין לניהול נפח האחסון (
roles/storage.admin) – קטגוריה של Cloud Storage
- אדמין BigLake (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יכולות ותמיכה בטבלאות
כשמשתמשים בטבלאות בקטלוג של Lakehouse runtime, כדאי להבין את סוגי הטבלאות השונים ואת האפשרויות שלהן. מידע נוסף על שימוש בטבלאות Apache Iceberg
טבלאות Iceberg נתמכות
יש תמיכה רק בטבלאות Apache Iceberg V2 (זמינות כללית) ו-V3 (גרסת Preview). אין תמיכה בטבלאות Iceberg V1. כדי לשדרג טבלאות קיימות בגרסה 1, אפשר לעיין במאמר שדרוג טבלאות Iceberg בגרסה 1 לגרסה 2.
שימוש באפשרויות של הטבלה (גרסת Preview)
אתם יכולים להגדיר מאפיינים ספציפיים של טבלאות כדי להשתמש ביכולות מנוהלות של BigQuery, כמו שפת הטיפול בנתונים (DML) ב-BigQuery וניהול אוטומטי של טבלאות. התכונות האלה מופעלות בדרכים שונות בהתאם למקום שבו הטבלה נוצרת:
- מ-BigQuery: שפת הטיפול בנתונים (DML) ב-BigQuery וניהול אוטומטי של טבלאות מופעלים כברירת מחדל.
- ממנועי קוד פתוח: כדי להצטרף, צריך להגדיר במפורש את מאפייני הטבלה. מידע נוסף מופיע במאמר הגדרת אפשרויות של טבלה.
צור טבלה
יוצרים טבלת Iceberg.
המסוף
במסוף Google Cloud , עוברים אל Lakehouse.
בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם קטלוג.
בסרגל התפריטים, לוחצים על + יצירת טבלה.
בקטע פורמט טבלה, בוחרים באפשרות Iceberg.
בשדה שם הטבלה, מזינים שם ייחודי לטבלה.
לוחצים על יצירה.
הטבלה מופיעה בדף פרטי מרחב השמות.
Spark
spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")
מחליפים את הערכים הבאים:
-
NAMESPACE_NAME: השם של מרחב השמות. -
TABLE_NAME: שם לטבלה.
כדי להפעיל קריאה/כתיבה של נתונים בין מערכות וניהול טבלאות (גרסת Preview), מוסיפים את המאפיינים לסעיף 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: שם לטבלה.
כדי להפעיל יכולת פעולה הדדית של קריאה/כתיבה וניהול טבלאות (גרסת Preview), מוסיפים את המאפיינים האלה לסעיף WITH:
WITH (
"gcp.biglake.bigquery-dml.enabled" = 'true',
"gcp.biglake.table-management.enabled" = 'true'
)
gcloud
כדי ליצור טבלה באמצעות gcloud, מריצים את הפקודה 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 runtime מ-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: השם של מרחב השמות של הקטלוג.