שינוי טבלה

שינוי טבלה מאפשר לפתח את הסכימה (למשל, להוסיף עמודות) ולעדכן את מאפייני המטא-נתונים של הטבלה.

השינויים מנוהלים על ידי קטלוג זמן הריצה של Lakehouse.

לפני שמתחילים

בסקירה הכללית של הטבלה מוסבר על הסוגים השונים של הטבלאות ועל ההשלכות של השימוש בהן.

יש תמיכה רק בטבלאות Apache Iceberg V2 (זמינות כללית) ו-V3 (גרסת Preview). אין תמיכה בטבלאות Iceberg V1. כדי לשדרג טבלאות קיימות בגרסה 1, אפשר לעיין במאמר שדרוג טבלאות Iceberg מגרסה 1 לגרסה 2.

  1. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  2. מפעילים את BigLake API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לשינוי טבלה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט ובקטגוריית האחסון:

  • ‫Alter table in credential vending mode: BigLake Editor (roles/biglake.editor) - the project
  • שינוי טבלה במצב שבו לא מונפקים אישורים:
    • BigLake Editor (roles/biglake.editor) – הפרויקט
    • משתמש באובייקטים באחסון (roles/storage.objectUser) – קטגוריה של Cloud Storage

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

שינוי טבלה

כדי להוסיף עמודה לטבלה:

המסוף

  1. במסוף Google Cloud , עוברים אל Lakehouse.

    מעבר אל Lakehouse

  2. בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם קטלוג.

  3. בטבלה פרטי מרחב שמות, בוחרים טבלה ומרחיבים את אפשרויות התפריט.

  4. לוחצים על Edit.

  5. מעדכנים את ערכי הטבלה בתיבת הדו-שיח.

  6. לוחצים על Save.

Spark

spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()

Trino

ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;

gcloud

כדי לעדכן את מאפייני הטבלה באמצעות gcloud, מריצים את הפקודה gcloud biglake iceberg tables update.

gcloud biglake iceberg tables update TABLE_NAME \
    --project="PROJECT_ID" \
    --catalog="CATALOG_ID" \
    --namespace="NAMESPACE_NAME" \
    --update-properties="KEY=VALUE,..."

מחליפים את מה שכתוב בשדות הבאים:

  • TABLE_NAME: השם של טבלת Iceberg.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • CATALOG_ID: המזהה של הקטלוג.
  • NAMESPACE_NAME: השם של מרחב השמות של הקטלוג.
  • KEY=VALUE,...: מאפייני הטבלה שרוצים להוסיף או לעדכן.

REST

כדי לבצע שמירה של שינויים בטבלת Iceberg באמצעות API בארכיטקטורת REST, שולחים בקשה לנקודת הקצה UpdateIcebergTable ‏ (CommitTable):POST

POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME

גוף הבקשה צריך להכיל מטען ייעודי (payload) תקין בפורמט JSON של Iceberg CommitTableRequest שמגדיר את דרישת הבסיס ואת רשימת עדכוני המטא-נתונים שרוצים להחיל.

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • CATALOG_ID: המזהה של הקטלוג.
  • NAMESPACE_NAME: השם של מרחב השמות של הקטלוג.
  • TABLE_NAME: השם של טבלת Iceberg.

המאמרים הבאים