הגדרת אפשרויות הטבלה

הגדרת אפשרויות לטבלאות מאפשרת לכם להביע הסכמה להפעלת יכולת פעולה הדדית של כתיבה ב-BigQuery או לניהול טבלאות (אופטימיזציה אוטומטית של אחסון) עבור טבלאות Apache Iceberg בקטלוג זמן הריצה של Lakehouse. האפשרויות האלה הן הגדרות בסיסיות שמרחיבות את היכולות של פעולות בטבלה.

אפשר להגדיר מאפיינים ספציפיים של טבלה כדי להפעיל יכולת פעולה הדדית של כתיבה עם BigQuery DML או להפעיל ניהול אוטומטי של טבלה (אופטימיזציה של אחסון).

כשמשתמשים בטבלאות בקטלוג של Lakehouse runtime, כדאי להבין את סוגי הטבלאות השונים ואת האפשרויות שלהם. מידע נוסף על שימוש בטבלאות Apache Iceberg

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

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

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

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

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

  3. מגדירים את קטלוג זמן הריצה של Lakehouse עם נקודת הקצה (endpoint) של קטלוג REST של Apache Iceberg.

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

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

  • הגדרת מאפייני טבלה במצב של מכירת אישורים: עורך BigLake ‏ (roles/biglake.editor) – הפרויקט
  • הגדרת מאפייני הטבלה במצב שאינו credential vending:
    • BigLake Editor (roles/biglake.editor) – הפרויקט
    • משתמש באובייקטים באחסון (roles/storage.objectUser) – קטגוריה של Cloud Storage

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

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

דברים שכדאי להביא בחשבון בנוגע להגדרות

כשמגדירים את האפשרויות של הטבלה, חשוב להביא בחשבון את הדרישות הבאות ואת התנהגויות ברירת המחדל:

טבלאות Iceberg נתמכות

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

דרישה למכירת פרטי כניסה

כדי להצטרף לניהול אוטומטי של טבלאות, צריך להפעיל הקצאת אישורים בקטלוג של זמן הריצה של Lakehouse ברמת הקטלוג. משימות ברקע לניהול טבלאות משתמשות בחשבון של שירות למתן הרשאות כדי לבצע אימות ולעדכן קבצים של נתוני אחסון בסיסיים.

הפעלת BigQuery DML

הפעלת הצהרות של שפת הטיפול בנתונים (DML) ב-BigQuery מאפשרת יכולת פעולה הדדית של כתיבה מ-BigQuery בטבלאות Apache Iceberg שנוצרו באמצעות מנועי קוד פתוח.

ההצהרות הנתמכות כוללות את INSERT,‏ UPDATE,‏ DELETE ו-MERGE, וגם הצהרות DDL רגילות כמו CREATE TABLE,‏ ALTER TABLE ו-DROP TABLE, למעט הצהרות שלא נתמכות בטבלאות Apache Iceberg ב-BigQuery.

הפעלת BigQuery DML לטבלאות חדשות

כשיוצרים טבלה מ-BigQuery, שפת ה-DML של BigQuery וניהול הטבלאות האוטומטי מופעלים כברירת מחדל. כשיוצרים טבלה ממנועי קוד פתוח, צריך להגדיר את מאפיין הטבלה gcp.biglake.bigquery-dml.enabled = true באמצעות תחביר ה-DDL של המנוע.

לדוגמה, ב-Spark SQL:

CREATE TABLE NAMESPACE.TABLE_NAME (id int, data string)
USING ICEBERG
TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = true);

הפעלת BigQuery DML בטבלאות קיימות

כדי להפעיל DML ב-BigQuery בטבלה קיימת, צריך לעדכן את מאפיין הטבלה.

לדוגמה, ב-Spark SQL:

ALTER TABLE NAMESPACE.TABLE_NAME
SET TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = true);

השבתת BigQuery DML

השבתה של DML ב-BigQuery הופכת את הטבלה לקריאה בלבד ב-BigQuery ומפסיקה את הניהול האוטומטי של הטבלה.

לדוגמה, ב-Spark SQL:

ALTER TABLE NAMESPACE.TABLE_NAME
SET TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = false);

הפעלת ניהול טבלאות

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

ניהול הטבלה מאפשר לבצע את הפעולות הבאות:

  • תפוגה של תמונות מצב ומנגנון איסוף: תפוגה של תמונות מצב מאפשרת לנהל את השמירה והמחיקה של נתונים וקובצי מטא-נתונים מתמונות מצב של טבלאות. התהליך הזה פועל אוטומטית ברקע אחרי כל שינוי בנתונים. תוקף התמונות המצב פג על סמך מאפייני טבלת Iceberg שהוגדרו על ידי המשתמש history.expire.max-snapshot-age-ms וhistory.expire.min-snapshots-to-keep בטבלה. הוא מסיר רשומות של תמונות מצב שתוקפן פג, על ידי יצירה של הגדרה נוספת של תמונת מצב שמוצגת בקובץ מטא-נתונים חדש שלא כולל יותר הפניות לתמונות המצב שהוסרו.

    • מגבלה: אם הטבלה משתמשת בתגים או בענפים, המערכת מדלגת על תפוגת ה-snapshot ועל מנגנון איסוף הזבל שקשור אליה. מידע נוסף מופיע בקטע מגבלות.

    • מגבלה: הסרת קבצים יתומים לא מתבצעת על ידי ניהול אוטומטי של טבלאות. מידע נוסף מופיע בקטע מגבלות.

  • איחוד (דחיסה): תהליך האיחוד אחראי לשמירה על הצורה של הנתונים, על ידי מיזוג קבצים קטנים לקבצים גדולים יותר. האיחוד פועל אוטומטית ברקע אחרי כל שינוי בנתונים. קבצים נבחרים לדחיסה אם הגודל הממוצע שלהם ללא דחיסה קטן מ-50% מגודל קובץ היעד של 256MB. כל פעולת מיזוג יוצרת תמונת מצב חדשה של הטבלה. בדרך כלל, עבודות של מיזוג נתונים נכנעות ומנסות שוב אחרי כל פעולת DML שמופעלת. עם זאת, כדי למנוע מצב של חוסר מקום באחסון ללא הגבלת זמן, משימת מיזוג מופעלת בכוח כל 24 שעות אם הנתונים מתאימים למיזוג.

  • מעקב אחרי משימות לניהול טבלאות: כל המשימות לניהול טבלאות ברקע מתועדות בתצוגה INFORMATION_SCHEMA.JOBS של BigQuery. אפשר להריץ שאילתה על התצוגה הזו כדי לעקוב אחרי הפעולות האלה, בדומה לאופן שבו עוקבים אחרי משימות אחרות ב-BigQuery. מידע נוסף על שליחת שאילתות לגבי נתוני משימות זמין במאמר קבלת משימות אופטימיזציה של אחסון Iceberg.

    התדירות של משימות ניהול הטבלה קשורה ישירות לפעילות של שינוי נתונים. הוספות או עדכונים קטנים ותכופים מפעילים משימות רקע בתדירות גבוהה יותר. יכול להיות שלא יהיו עבודות ברקע אם לא מתבצעות פעולות כתיבה בטבלה. לעומת זאת, אם יש הרבה פעולות כתיבה, יכול להיות שתראו יותר פעילות של משימות ב-INFORMATION_SCHEMA.

הפעלת ניהול טבלאות לטבלאות חדשות

כשיוצרים טבלה מ-BigQuery, שפת ה-DML וניהול הטבלאות האוטומטי מופעלים כברירת מחדל. כשיוצרים טבלה ממנועי קוד פתוח, צריך להגדיר את המאפיין gcp.biglake.table-management.enabled. הפעלת ניהול הטבלאות מפעילה אוטומטית את BigQuery DML אם הוא לא מופעל כבר.

לדוגמה, ב-Spark SQL:

CREATE TABLE NAMESPACE.TABLE_NAME (id int, data string)
USING ICEBERG
TBLPROPERTIES ('gcp.biglake.table-management.enabled' = true);

הפעלת ניהול טבלאות לטבלאות קיימות

כדי להפעיל ניהול טבלאות בטבלה קיימת, מעדכנים את מאפיין הטבלה.

לדוגמה, ב-Spark SQL:

ALTER TABLE NAMESPACE.TABLE_NAME
SET TBLPROPERTIES ('gcp.biglake.table-management.enabled' = true);

השבתת ניהול הטבלה

השבתת ניהול הטבלה מונעת הוספה לתור של עבודות אופטימיזציה עתידיות ברקע, אבל עבודות פעילות שנמצאות בתהליך יושלמו. השבתת ניהול הטבלה לא משביתה את DML ב-BigQuery.

Spark SQL

ALTER TABLE NAMESPACE.TABLE_NAME
SET TBLPROPERTIES ('gcp.biglake.table-management.enabled' = false);

BigQuery

ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
SET OPTIONS (`properties.gcp.biglake.table-management` = "disabled");

מגבלות

המגבלות על יכולות מנוהלות (כמו יכולת פעולה הדדית של כתיבה ב-BigQuery וניהול אוטומטי של טבלאות) כוללות:

מגבלות כלליות

  • היכולות המנוהלות נתמכות רק בטבלאות Apache Iceberg שנוצרו בקטלוג של זמן הריצה של Lakehouse באמצעות נקודת הקצה של קטלוג Apache Iceberg REST.
  • כל המגבלות הקיימות לגבי טבלאות Apache Iceberg שמנוהלות על ידי BigQuery חלות על פעולות שמופעלות בהן יכולות מנוהלות.
  • אין תמיכה ביכולות מנוהלות לטבלאות בפורמט Apache Iceberg בגרסה 3. אפשר להפעיל את היכולות המנוהלות רק בטבלאות בפורמט גרסה 2 (מפרט Iceberg v2).
  • אין תמיכה ביכולות מנוהלות בטבלאות עם חלוקה מתקדמת למחיצות, כמו חלוקה למחיצות לפי STRING, חלוקה למחיצות לפי כמה עמודות או שינוי של מחיצות.