טבלאות מנוהלות של Apache Iceberg
טבלאות מנוהלות של Apache Iceberg (לשעבר טבלאות BigLake ל-Apache Iceberg ב-BigQuery) מספקות את הבסיס ליצירת lakehouse בפורמט פתוח ב- Cloud de Confiance by S3NS. טבלאות מנוהלות ב-Iceberg מציעות את אותה חוויה מנוהלת כמו טבלאות רגילות ב-BigQuery, אבל הנתונים מאוחסנים בדלי אחסון בבעלות הלקוח. טבלאות מנוהלות ב-Iceberg תומכות בפורמט הטבלה הפתוח Iceberg, כדי לשפר את יכולת הפעולה ההדדית עם מנועי חישוב של קוד פתוח ושל צד שלישי בעותק יחיד של נתונים.
טבלאות מנוהלות של Iceberg תומכות בתכונות הבאות:
- Table mutations באמצעות שפת טיפול בנתונים (DML) של GoogleSQL.
- העברה מאוחדת של נתונים בכמויות גדולות וסטרימינג עם תפוקה גבוהה באמצעות BigQuery Storage Write API (gRPC) דרך מחברים כמו Spark, Dataflow ומנועים אחרים.
- ייצוא של תמונת מצב של Iceberg V2 ורענון אוטומטי בכל שינוי בטבלה לגישה ישירה לשאילתות באמצעות מנועי שאילתות בקוד פתוח ושל צד שלישי, כמו Spark.
- התפתחות סכימה, שמאפשרת להוסיף, להסיר ולשנות את השם של עמודות בהתאם לצרכים שלכם. התכונה הזו מאפשרת גם לשנות את סוג הנתונים ואת המצב של עמודה קיימת. מידע נוסף זמין במאמר בנושא כללי המרות.
- אופטימיזציה אוטומטית של האחסון, כולל שינוי גודל קובץ בהתאם לצורך, אשכול אוטומטי, מנגנון איסוף ואופטימיזציה של מטא-נתונים.
- מסע בזמן לגישה לנתונים היסטוריים ב-BigQuery.
- אבטחה ברמת העמודה ואנונימיזציה של נתונים.
- עסקאות בכמה דפי תדפיס.
- חלוקת טבלה למחיצות.
- יצירת טבלאות בתהליכי עבודה ב-Dataform.
- סביבת זמן ריצה מתקדמת של BigQuery.
- סטרימינג באמצעות BigQuery Storage Write API (gRPC).
ארכיטקטורה
טבלאות מנוהלות ב-Iceberg מאפשרות לכם ליהנות מנוחות הניהול של משאבי BigQuery בטבלאות שנמצאות בקטגוריות משלכם בענן. אתם יכולים להשתמש ב-BigQuery ובמנועי חישוב בקוד פתוח בטבלאות האלה בלי להעביר את הנתונים מהדליים שאתם שולטים בהם. כדי להתחיל להשתמש בטבלאות מנוהלות של Iceberg, צריך להגדיר קטגוריה של Cloud Storage.
לשימוש בטבלאות מנוהלות של Iceberg יש השלכות על הקטגוריה שלכם:
- BigQuery יוצר קובצי נתונים חדשים בדלי בתגובה לבקשות כתיבה ולאופטימיזציות של אחסון ברקע, כמו הצהרות DML וסטרימינג.
- הדחיסה והאשכול האוטומטיים מתבצעים בקובצי הנתונים בדלי. אחרי שתוקף חלון הנסיעה בזמן יפוג, קובצי הנתונים ייאספו כזבל. עם זאת, אם הטבלה נמחקת, קובצי הנתונים המשויכים לא עוברים איסוף אשפה. מידע נוסף זמין במאמר בנושא אופטימיזציה של אחסון.
יצירת טבלה מנוהלת ב-Iceberg דומה ליצירת טבלאות ב-BigQuery. מכיוון שהנתונים מאוחסנים בפורמטים פתוחים ב-Cloud Storage, אתם צריכים:
- מציינים את הקישור למשאבים ב-Cloud עם
WITH CONNECTIONכדי להגדיר את פרטי הכניסה לקישור של BigQuery ל-Cloud Storage. - מציינים את פורמט הקובץ של אחסון הנתונים כ-
PARQUETבאמצעות ההצהרהfile_format = PARQUET. - מציינים את פורמט טבלת המטא-נתונים של הקוד הפתוח כ-
ICEBERGבאמצעות ההצהרהtable_format = ICEBERG.
שיטות מומלצות
שינוי או הוספה של קבצים ישירות ל-bucket מחוץ ל-BigQuery עלולים לגרום לאובדן נתונים או לשגיאות שלא ניתן לתקן. בטבלה הבאה מתוארים תרחישים אפשריים:
| פעולה | השלכות | מניעה |
|---|---|---|
| מוסיפים קבצים חדשים לקטגוריה מחוץ ל-BigQuery. | אובדן נתונים: קבצים או אובייקטים חדשים שנוספו מחוץ ל-BigQuery לא מתועדים על ידי BigQuery. קבצים שלא עוקבים אחריהם נמחקים על ידי תהליכי איסוף פסולת ברקע. | הוספת נתונים רק דרך BigQuery. כך BigQuery יכול לעקוב אחרי הקבצים ולמנוע את איסוף הג'יפה שלהם. כדי למנוע הוספות מקריות ואובדן נתונים, מומלץ גם להגביל את הרשאות הכתיבה של כלים חיצוניים בדליים שמכילים טבלאות מנוהלות של Iceberg. |
| יצירת טבלה חדשה מנוהלת בפורמט Iceberg בקידומת לא ריקה. | אובדן נתונים: BigQuery אינו עוקב אחר נתונים קיימים, ולכן קבצים אלה נחשבים כלא-מעוקבים, ונמחקים על ידי תהליכי איסוף פסולת ברקע. | יוצרים רק טבלאות מנוהלות חדשות של Iceberg בקידומות ריקות. |
| לשנות או להחליף קובצי נתונים של טבלה מנוהלת ב-Iceberg. | אובדן נתונים: אם מתבצע שינוי או החלפה חיצוניים, הטבלה לא עוברת בדיקת עקביות והופכת ללא קריאה. השאילתות נכשלות. אין דרך לשחזר את החשבון מהנקודה הזו באמצעות שירות עצמי. כדי לקבל עזרה בשחזור נתונים, אפשר לפנות אל התמיכה. |
שינוי נתונים רק דרך BigQuery. כך BigQuery יכול לעקוב אחרי הקבצים ולמנוע את איסוף הג'יפה שלהם. כדי למנוע הוספות מקריות ואובדן נתונים, מומלץ גם להגביל את הרשאות הכתיבה של כלים חיצוניים בדליים שמכילים טבלאות מנוהלות של Iceberg. |
| יוצרים שתי טבלאות מנוהלות של Iceberg באותם מזהי URI או במזהי URI חופפים. | אובדן נתונים: ב-BigQuery לא מתבצע גישור בין מופעים זהים של URI של טבלאות מנוהלות ב-Iceberg. תהליכי איסוף פסולת ברקע עבור כל טבלה יתייחסו לקבצים של הטבלה הנגדית כקבצים שלא עוקבים, וימחקו אותם, מה שיגרום לאובדן נתונים. | צריך להשתמש ב-URI ייחודיים לכל טבלה מנוהלת של Iceberg. |
שיטות מומלצות להגדרת קטגוריות של Cloud Storage
ההגדרה של קטגוריית Cloud Storage והחיבור שלה ל-BigQuery משפיעים באופן ישיר על הביצועים, העלות, שלמות הנתונים, האבטחה והניהול של טבלאות Iceberg מנוהלות. השיטות המומלצות הבאות יעזרו לכם בהגדרה הזו:
בוחרים שם שמציין בבירור שה-bucket מיועד רק לטבלאות מנוהלות של Iceberg.
בוחרים קטגוריות Cloud Storage באזור יחיד שנמצאות באותו אזור כמו מערך הנתונים של BigQuery. התיאום הזה משפר את הביצועים ומפחית את העלויות כי הוא מונע חיובים על העברת נתונים.
כברירת מחדל, נתונים ב-Cloud Storage מאוחסנים בסוג האחסון Standard Storage, שמספק ביצועים מספיקים. כדי לבצע אופטימיזציה של עלויות אחסון הנתונים, אתם יכולים להפעיל את התכונה סיווג אוטומטי כדי לנהל באופן אוטומטי את המעברים בין סוגי האחסון. התכונה סיווג אוטומטי מתחילה בסוג האחסון Standard Storage ומעבירה אובייקטים שלא ניגשים אליהם לסוגי אחסון בשימוש נדיר יותר, כדי לצמצם את עלויות האחסון. כשקוראים את האובייקט שוב, הוא מועבר חזרה לסיווג Standard.
מפעילים גישה אחידה ברמת הקטגוריה ומניעת גישה ציבורית.
מוודאים שהתפקידים הנדרשים הוקצו למשתמשים ולחשבונות השירות הנכונים.
כדי למנוע מחיקה או השחתה של נתונים בטעות בקטגוריית Cloud Storage, כדאי להגביל את הרשאות הכתיבה והמחיקה של רוב המשתמשים בארגון. כדי לעשות את זה, מגדירים מדיניות הרשאות של דלי עם תנאים שדוחים בקשות
PUTו-DELETEשל כל המשתמשים, חוץ מאלה שאתם מציינים.כדי להוסיף הגנה למידע אישי רגיש, אפשר להשתמש במפתחות הצפנה בניהול Google או במפתחות הצפנה בניהול הלקוח.
הפעלת רישום ביומן ביקורת כדי לקבל שקיפות תפעולית, לפתור בעיות ולעקוב אחרי גישה לנתונים.
כדי להגן על נתונים מפני מחיקה בטעות, מומלץ להשאיר את מדיניות המחיקה הרכה (שמירת נתונים למשך 7 ימים) כברירת המחדל. עם זאת, אם תגלו שנתונים נמחקו, עדיף לפנות אל התמיכה במקום לשחזר אובייקטים באופן ידני, כי מערכת המטא-נתונים של BigQuery לא עוקבת אחרי אובייקטים שנוספו או שונו מחוץ ל-BigQuery.
קביעת גודל קבצים אדפטיבית, קיבוץ באשכולות אוטומטי ואיסוף אשפה מופעלים אוטומטית ועוזרים באופטימיזציה של ביצועי קבצים ועלויות.
אל תשתמשו בתכונות הבאות של Cloud Storage, כי הן לא נתמכות בטבלאות מנוהלות של Iceberg:
- רשימות של בקרת גישה (ACL) לאובייקטים
- מפתחות הצפנה באספקת הלקוח (CSEK)
- ניהול גרסאות של אובייקטים
- נעילת אובייקטים
- נעילת קטגוריה
- שחזור אובייקטים שנמחקו זמנית באמצעות BigQuery API או bq CLI
כדי ליישם את השיטות המומלצות האלה, יוצרים את הדלי באמצעות הפקודה הבאה:
gcloud storage buckets create gs://BUCKET_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --enable-autoclass \ --public-access-prevention \ --uniform-bucket-level-access
מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_NAME: השם של הקטגוריה החדשה -
PROJECT_ID: מזהה הפרויקט -
LOCATION: המיקום של הקטגוריה החדשה
תהליכי עבודה של טבלאות מנוהלות ב-Iceberg
בקטעים הבאים מוסבר איך ליצור, לטעון, לנהל ולשאול שאילתות בטבלאות מנוהלות של Iceberg.
לפני שמתחילים
לפני שיוצרים טבלאות מנוהלות של Iceberg ומשתמשים בהן, צריך לוודא שהגדרתם חיבור למשאב בענן לדלי אחסון. לחיבור שלכם צריכות להיות הרשאות כתיבה בקטגוריית האחסון, כמו שמפורט בקטע תפקידים נדרשים שבהמשך. מידע נוסף על התפקידים וההרשאות הנדרשים לחיבורים זמין במאמר ניהול חיבורים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול טבלאות בפרויקט באמצעות BigQuery, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
כדי ליצור טבלאות מנוהלות של Iceberg:
- BigQuery Data Owner (
roles/bigquery.dataOwner) בפרויקט - BigQuery Connection Admin (
roles/bigquery.connectionAdmin) בפרויקט
- BigQuery Data Owner (
-
כדי להריץ שאילתות על טבלאות מנוהלות של Iceberg:
- BigQuery Data Viewer (
roles/bigquery.dataViewer) בפרויקט - BigQuery User (
roles/bigquery.user) בפרויקט
- BigQuery Data Viewer (
-
מקצים לחשבון השירות של החיבור את התפקידים הבאים כדי שהוא יוכל לקרוא ולכתוב נתונים ב-Cloud Storage:
- משתמש באובייקטים באחסון (
roles/storage.objectUser) בקטגוריה - Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) on the bucket
- משתמש באובייקטים באחסון (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לאפשר ל-BigQuery לנהל טבלאות בפרויקט. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לאפשר ל-BigQuery לנהל טבלאות בפרויקט, נדרשות ההרשאות הבאות:
-
הכול:
-
bigquery.connections.delegateבפרויקט -
bigquery.jobs.createבפרויקט -
bigquery.readsessions.createבפרויקט -
bigquery.tables.createבפרויקט -
bigquery.tables.getבפרויקט -
bigquery.tables.getDataבפרויקט -
storage.buckets.getבקטגוריה שלכם -
storage.objects.createבקטגוריה שלכם -
storage.objects.deleteבקטגוריה שלכם -
storage.objects.getבקטגוריה שלכם -
storage.objects.listבקטגוריה שלכם
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
יצירת טבלאות מנוהלות של Iceberg
כדי ליצור טבלה מנוהלת של Iceberg, בוחרים אחת מהשיטות הבאות:
SQL
CREATE TABLE [PROJECT_ID.]DATASET_ID.TABLE_NAME ( COLUMN DATA_TYPE[, ...] ) CLUSTER BY CLUSTER_COLUMN_LIST WITH CONNECTION {CONNECTION_NAME | DEFAULT} OPTIONS ( file_format = 'PARQUET', table_format = 'ICEBERG', storage_uri = 'STORAGE_URI');
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: הפרויקט שמכיל את מערך הנתונים. אם לא מוגדר, הפקודה מניחה את פרויקט ברירת המחדל.
- DATASET_ID: מערך נתונים קיים.
- TABLE_NAME: השם של הטבלה שיוצרים.
- DATA_TYPE: סוג הנתונים של המידע שמופיע בעמודה.
- CLUSTER_COLUMN_LIST (אופציונלי): רשימה מופרדת בפסיקים שמכילה עד ארבע עמודות. הן צריכות להיות עמודות ברמה העליונה, ללא חזרות.
- CONNECTION_NAME: השם של החיבור. לדוגמה,
myproject.us.myconnection. כדי להשתמש בחיבור ברירת מחדל, מצייניםDEFAULTבמקום שם החיבור. - STORAGE_URI: URI של Cloud Storage מוגדר במלואו. לדוגמה:
gs://mybucket/table.
BQ
bq --project_id=PROJECT_ID mk \ --table \ --file_format=PARQUET \ --table_format=ICEBERG \ --connection_id=CONNECTION_NAME \ --storage_uri=STORAGE_URI \ --schema=COLUMN_NAME:DATA_TYPE[, ...] \ --clustering_fields=CLUSTER_COLUMN_LIST \ DATASET_ID.MANAGED_TABLE_NAME
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: הפרויקט שמכיל את מערך הנתונים. אם לא מוגדר, הפקודה מניחה את פרויקט ברירת המחדל.
- CONNECTION_NAME: השם של החיבור. לדוגמה,
myproject.us.myconnection. - STORAGE_URI: URI של Cloud Storage מוגדר במלואו. לדוגמה:
gs://mybucket/table. - COLUMN_NAME: שם העמודה.
- DATA_TYPE: סוג הנתונים של המידע שכלול בעמודה.
- CLUSTER_COLUMN_LIST (אופציונלי): רשימה מופרדת בפסיקים שמכילה עד ארבע עמודות. הן צריכות להיות עמודות ברמה העליונה, ללא חזרות.
- DATASET_ID: המזהה של מערך נתונים קיים.
- MANAGED_TABLE_NAME: השם של הטבלה שיוצרים.
API
מבצעים קריאה ל-method tables.insert עם משאב של טבלה מוגדר, בדומה לדוגמה הבאה:
{ "tableReference": { "tableId": "TABLE_NAME" }, "biglakeConfiguration": { "connectionId": "CONNECTION_NAME", "fileFormat": "PARQUET", "tableFormat": "ICEBERG", "storageUri": "STORAGE_URI" }, "schema": { "fields": [ { "name": "COLUMN_NAME", "type": "DATA_TYPE" } [, ...] ] } }
מחליפים את מה שכתוב בשדות הבאים:
- TABLE_NAME: השם של הטבלה שיוצרים.
- CONNECTION_NAME: השם של החיבור. לדוגמה,
myproject.us.myconnection. - STORAGE_URI: URI של Cloud Storage מוגדר במלואו.
יש תמיכה גם בתווים כלליים לחיפוש. לדוגמה,
gs://mybucket/table. - COLUMN_NAME: שם העמודה.
- DATA_TYPE: סוג הנתונים של המידע שכלול בעמודה.
ייבוא נתונים לטבלאות מנוהלות ב-Iceberg
בקטעים הבאים מוסבר איך לייבא נתונים מפורמטים שונים של טבלאות לטבלאות מנוהלות ב-Iceberg.
טעינת נתונים רגילה מקבצים שטוחים
בטבלאות מנוהלות של Iceberg נעשה שימוש במשימות טעינה של BigQuery כדי לטעון קבצים חיצוניים לטבלאות מנוהלות של Iceberg. אם יש לכם טבלה מנוהלת קיימת ב-Iceberg, אתם יכולים לפעול לפי המדריך ל-CLI של bq load או לפי המדריך ל-SQL של LOAD כדי לטעון נתונים חיצוניים. אחרי טעינת הנתונים, קובצי Parquet חדשים נכתבים בתיקייה STORAGE_URI/data.
אם משתמשים בהוראות הקודמות בלי טבלה מנוהלת קיימת של Iceberg, נוצרת במקום זאת טבלת BigQuery.
בדוגמאות הבאות מוצגות טעינות אצווה ספציפיות לכלים לטבלאות מנוהלות ב-Iceberg:
SQL
LOAD DATA INTO MANAGED_TABLE_NAME FROM FILES ( uris=['STORAGE_URI'], format='FILE_FORMAT');
מחליפים את מה שכתוב בשדות הבאים:
- MANAGED_TABLE_NAME: השם של טבלה מנוהלת קיימת בפורמט Iceberg.
- STORAGE_URI: URI של Cloud Storage מוגדר במלואו או רשימה מופרדת בפסיקים של מזהי URI.
יש תמיכה גם בתווים כלליים לחיפוש. לדוגמה,
gs://mybucket/table. - FILE_FORMAT: הפורמט של טבלת המקור. ב
formatהשורה שלload_option_listמפורטים הפורמטים הנתמכים.
BQ
bq load \ --source_format=FILE_FORMAT \ MANAGED_TABLE \ STORAGE_URI
מחליפים את מה שכתוב בשדות הבאים:
- FILE_FORMAT: הפורמט של טבלת המקור. ב
formatהשורה שלload_option_listמפורטים הפורמטים הנתמכים. - MANAGED_TABLE_NAME: השם של טבלה מנוהלת קיימת בפורמט Iceberg.
- STORAGE_URI: URI של Cloud Storage מוגדר במלואו או רשימה מופרדת בפסיקים של מזהי URI.
יש תמיכה גם בתווים כלליים לחיפוש. לדוגמה,
gs://mybucket/table.
טעינה רגילה מקבצים עם חלוקה למחיצות ב-Apache Hive
אפשר לטעון קבצים מחולקים למחיצות ב-Hive לטבלאות מנוהלות ב-Iceberg באמצעות משימות טעינה רגילות ב-BigQuery. מידע נוסף זמין במאמר בנושא טעינה של נתונים שחולקו למחיצות באופן חיצוני.
טעינת נתונים בסטרימינג מ-Pub/Sub
אפשר לטעון נתונים מוזרמים לטבלאות מנוהלות ב-Iceberg באמצעות מינוי ל-Pub/Sub BigQuery.
טעינת נתונים בסטרימינג באמצעות שאילתות מתמשכות
אפשר לעבד ולכתוב נתונים בסטרימינג מ-BigQuery לטבלאות מנוהלות ב-Iceberg באופן רציף באמצעות שאילתה רציפה ב-BigQuery עם הצהרת ה-DML INSERT. כך תוכלו לבצע ETL הפוך בזמן אמת, העשרת נתונים וסינון ב-lakehouse בפורמט פתוח.
לפני שמריצים את השאילתה הרציפה, צריך לוודא שטבלת Iceberg המנוהלת קיימת, ושלמשתמש או לחשבון השירות יש את ההרשאות הנדרשות בטבלה, בחיבור המשאבים שלה Cloud de Confiance by S3NS ובמאגר הבסיסי של Cloud Storage.
הוראות להגדרה ודוגמאות ל-SQL זמינות במאמר כתיבת נתונים לטבלאות מנוהלות ב-BigQuery או ב-Apache Iceberg.
ייצוא נתונים מטבלאות מנוהלות של Iceberg
בקטעים הבאים מוסבר איך לייצא נתונים מטבלאות מנוהלות של Iceberg לפורמטים שונים של טבלאות.
ייצוא נתונים לפורמטים שטוחים
כדי לייצא טבלה מנוהלת של Iceberg לפורמט שטוח, משתמשים בהצהרת EXPORT DATA ובוחרים פורמט יעד. מידע נוסף זמין במאמר בנושא ייצוא נתונים.
יצירת תמונות מצב של מטא-נתונים של טבלאות מנוהלות ב-Iceberg
כדי ליצור תמונת מצב של מטא-נתונים של טבלה מנוהלת ב-Iceberg:
מייצאים את המטא-נתונים לפורמט Iceberg V2 באמצעות פקודת ה-SQL
EXPORT TABLE METADATA.אופציונלי: מתזמנים רענון של תמונת מצב של מטא-נתונים של Iceberg. כדי לרענן תמונת מצב של מטא-נתונים ב-Iceberg על סמך מרווח זמן מוגדר, משתמשים בשאילתה מתוזמנת.
אופציונלי: מפעילים רענון אוטומטי של מטא-נתונים בפרויקט כדי לעדכן אוטומטית את תמונת המצב של מטא-נתוני טבלת Iceberg בכל שינוי בטבלה. כדי להפעיל רענון אוטומטי של מטא-נתונים, אפשר לפנות אל bigquery-tables-for-apache-iceberg-help@google.com. על כל פעולת רענון חלים
EXPORT METADATAעלויות.
בדוגמה הבאה נוצרת שאילתה מתוזמנת בשם My Scheduled Snapshot
Refresh Query באמצעות הצהרת ה-DDL EXPORT TABLE METADATA FROM
mydataset.test. הצהרת ה-DDL מופעלת כל 24 שעות.
bq query \ --use_legacy_sql=false \ --display_name='My Scheduled Snapshot Refresh Query' \ --schedule='every 24 hours' \ 'EXPORT TABLE METADATA FROM mydataset.test'
הצגת תמונת מצב של מטא-נתונים של טבלה מנוהלת ב-Iceberg
אחרי שתרעננו את תמונת המטא-נתונים של טבלת Iceberg מנוהלת, תוכלו למצוא את התמונה ב-URI של Cloud Storage שבו נוצרה במקור טבלת Iceberg מנוהלת. התיקייה /data מכילה את רסיסי הנתונים של קובץ Parquet, והתיקייה /metadata מכילה את תמונת המצב של המטא-נתונים של טבלת Iceberg המנוהלת.
SELECT table_name, REGEXP_EXTRACT(ddl, r"storage_uri\s*=\s*\"([^\"]+)\"") AS storage_uri FROM `mydataset`.INFORMATION_SCHEMA.TABLES;
שימו לב שהערכים mydataset ו-table_name הם placeholders לנתוני המערך ולטבלה בפועל.
קריאת טבלאות מנוהלות של Iceberg באמצעות Spark
בדוגמה הבאה מוגדרת הסביבה לשימוש ב-Spark SQL עם Spark, ואז מופעלת שאילתה כדי לאחזר נתונים מטבלה מנוהלת ספציפית של Iceberg.
spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \ --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \ --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \ # Query the table SELECT * FROM CATALOG_NAME.FOLDER_NAME;
מחליפים את מה שכתוב בשדות הבאים:
- ICEBERG_VERSION_NUMBER: גרסת זמן הריצה הנוכחית. מורידים את הגרסה האחרונה מגרסאות Iceberg.
- CATALOG_NAME: הקטלוג שאליו מתייחסים בטבלת Iceberg המנוהלת.
- BUCKET_PATH: הנתיב לדלי שמכיל את קובצי הטבלה.
לדוגמה,
gs://mybucket/. - FOLDER_NAME: התיקייה שמכילה את קובצי הטבלה. לדוגמה,
myfolder.
שינוי טבלאות מנוהלות של Iceberg
כדי לשנות טבלה מנוהלת ב-Iceberg, פועלים לפי השלבים שמפורטים במאמר בנושא שינוי סכימות של טבלאות.
שימוש בעסקאות עם כמה הצהרות
אפשר להשתמש בטרנזקציות עם כמה הצהרות עם טבלאות מנוהלות של Iceberg באותו אופן שבו משתמשים בהן עם טבלאות BigQuery רגילות. עסקאות עם כמה הצהרות משמשות בדרך כלל לביצוע שינויים בכמה טבלאות בו-זמנית או לביצוע שינויים בטבלה אחת בכמה שלבים. טרנזקציות מרובות הצהרות מבטיחות מאפייני ACID ותומכות בבידוד snapshot.
חלות מגבלות סטנדרטיות על עסקאות עם כמה הצהרות.
שימוש בחלוקה למחיצות
אפשר להשתמש בחלוקת טבלאות למחיצות עם טבלאות מנוהלות ב-Iceberg באופן דומה לשימוש בטבלאות BigQuery רגילות. כדי לחלק טבלה למחיצות, מציינים עמודה של מחיצה, שמשמשת לפילוח הטבלה. סוגי העמודות הבאים נתמכים בטבלאות מנוהלות של Iceberg:
DATEDATETIMETIMESTAMP
חלוקת טבלה למחיצות לפי עמודה של DATE, DATETIME או TIMESTAMP נקראת חלוקה למחיצות לפי עמודה של יחידת זמן.
אתם בוחרים אם החלוקות יהיו שעתיות, יומיות, חודשיות או שנתיות.
טבלאות מנוהלות ב-Iceberg תומכות גם בקיבוץ לאשכולות ובשילוב של טבלאות מקובצות לאשכולות וטבלאות מחולקות למחיצות.
מגבלות על חלוקה למחיצות
- כל המגבלות של טבלאות מחולקות למחיצות ב-BigQuery חלות.
- לא ניתן להשתמש בסוגי עמודות של חלוקה למחיצות שאינם
DATE,DATETIMEאוTIMESTAMP. - אין תמיכה בשינוי של מחיצות.
יצירת טבלה מנוהלת של Iceberg עם חלוקה למחיצות
כדי ליצור טבלת Iceberg מנוהלת עם חלוקה למחיצות, פועלים לפי ההוראות ליצירת טבלת Iceberg מנוהלת רגילה וכוללים אחת מהאפשרויות הבאות, בהתאם לסביבה שלכם:
- הפסוקית
PARTITION BY - הדגלים
--time_partitioning_fieldו---time_partitioning_type - מאפיין
timePartitioning
אפשר להגדיר ולעדכן את תאריך התפוגה של המחיצה באותו אופן שבו עושים זאת בטבלאות BigQuery רגילות. מחיצות שתוקפן פג עוברות איסוף אשפה אחרי חלון הנסיעה בזמן. אם מוסיפים נתונים למחיצה שתוקף הנתונים שלה פג, תוקף הנתונים יפוג באופן מיידי.
שינוי ושאילתה של טבלאות מנוהלות של Iceberg שמחולקות למחיצות
הצהרות ושאילתות של שפת טיפול בנתונים (DML) ב-BigQuery לגבי טבלאות מנוהלות של Iceberg מחולקות למחיצות זהות לאלה של טבלאות מנוהלות רגילות של Iceberg. מערכת BigQuery מגדירה באופן אוטומטי את היקף המשימה למחיצות הנכונות, בדומה לחלוקה למחיצות מוסתרות ב-Iceberg. בנוסף, כל נתון חדש שמוסיפים לטבלה מחולק אוטומטית למחיצות.
אפשר גם להריץ שאילתות על טבלאות מנוהלות של Iceberg עם מחיצות באמצעות מנועים אחרים, בדיוק כמו על טבלאות מנוהלות רגילות של Iceberg. כדי ליהנות מחוויית השימוש הטובה ביותר, מומלץ להפעיל את האפשרות 'תמונות מצב של מטא-נתונים'.
כדי לשפר את האבטחה, מידע על חלוקה למחיצות בטבלאות מנוהלות של Iceberg מופרד מנתיב הנתונים ומנוהל באופן מלא על ידי שכבת המטא-נתונים.
תמחור
התמחור של טבלאות מנוהלות ב-Iceberg מורכב מאחסון, מאופטימיזציה של אחסון ומשאילתות ומשימות.
אחסון
בטבלאות מנוהלות של Iceberg, כל הנתונים מאוחסנים ב-Cloud Storage. תחויבו על כל הנתונים שמאוחסנים, כולל נתונים היסטוריים בטבלה. יכול להיות שיהיו גם חיובים על עיבוד נתונים ועל העברת נתונים ב-Cloud Storage. יכול להיות שיהיה פטור מתשלום על חלק מהפעולות ב-Cloud Storage אם הן מעובדות דרך BigQuery או דרך BigQuery Storage API. אין עמלות אחסון ספציפיות ל-BigQuery. מידע נוסף זמין במאמר תמחור של Cloud Storage.
אופטימיזציה של האחסון
טבלאות מנוהלות בפורמט Iceberg מבצעות ניהול אוטומטי של טבלאות, כולל דחיסה, סידור באשכולות, מנגנון איסוף ויצירה או רענון של מטא-נתונים ב-BigQuery, כדי לשפר את ביצועי השאילתות ולהפחית את עלויות האחסון. השימוש במשאבי מחשוב לניהול טבלאות מחויב ביחידות מחשוב נתונים (DCU) לאורך זמן, במרווחי זמן של שנייה. לפרטים נוספים, ראו תמחור של טבלאות מנוהלות ב-Iceberg.
פעולות ייצוא נתונים שמתבצעות בזמן סטרימינג דרך Storage Write API נכללות בתמחור של Storage Write API, ולא נגבות עליהן עלויות כפעולות תחזוקה ברקע. מידע נוסף זמין במאמר בנושא תמחור של העברת נתונים.
כדי לראות את היומנים ואת השימוש במחשוב של פעולות הרקע האלה, מריצים שאילתה בתצוגה INFORMATION_SCHEMA.JOBS. דוגמאות לשאילתות:
שאילתות ומשימות
בדומה לטבלאות BigQuery, אם אתם משתמשים בתמחור לפי דרישה ב-BigQuery, אתם מחויבים על שאילתות ועל בייטים שנקראים (לכל TiB), או על צריכת יחידות קיבולת (לכל שעת שימוש ביחידת קיבולת) אם אתם משתמשים בתמחור של קיבולת מחשוב ב-BigQuery.
התמחור של BigQuery חל גם על BigQuery Storage Read API ועל Storage Write API.
פעולות טעינה וייצוא (כמו EXPORT METADATA) משתמשות במשבצות של מהדורת Enterprise בתשלום לפי שימוש. זה שונה מטבלאות ב-BigQuery, שאין חיוב על הפעולות האלה. אם יש PIPELINE הזמנות עם משבצות של Enterprise או Enterprise Plus, פעולות הטעינה והייצוא ישתמשו במשבצות ההזמנה האלה במקום זאת.
מגבלות
לטבלאות מנוהלות ב-Iceberg יש את המגבלות הבאות:
- בטבלאות מנוהלות ב-Iceberg אין תמיכה בפעולות שינוי שם או בהצהרות
ALTER TABLE RENAME TO. - טבלאות מנוהלות בפורמט Iceberg לא תומכות בהעתקות של טבלאות או בהצהרות
CREATE TABLE COPY. - טבלאות מנוהלות ב-Iceberg לא תומכות בשיבוטים של טבלאות או בהצהרות
CREATE TABLE CLONE. - טבלאות מנוהלות ב-Iceberg לא תומכות בתמונות מצב של טבלאות או בהצהרות
CREATE SNAPSHOT TABLE. - טבלאות מנוהלות ב-Iceberg לא תומכות בסכימת הטבלה הבאה:
- סכימה ריקה
- סכימה עם סוגי נתונים
BIGNUMERIC,INTERVAL,JSON,RANGEאוGEOGRAPHY - סכימה עם השוואות שדות.
- סכימה עם ביטויי ערך ברירת מחדל.
- טבלאות מנוהלות ב-Iceberg לא תומכות בתרחישי התפתחות הסכימה הבאים:
NUMERICעדFLOATהמרות אוטומטיות של סוגיםINTעדFLOATהמרות אוטומטיות של סוגים- הוספת שדות חדשים עם היררכיה לעמודות
RECORDקיימות באמצעות פקודות SQL DDL
- כשמבצעים שאילתה על טבלאות מנוהלות של Iceberg באמצעות המסוף או ממשקי ה-API, גודל האחסון שמוצג הוא 0 בייט.
- טבלאות מנוהלות ב-Iceberg לא תומכות בתצוגות חומריות.
- טבלאות מנוהלות ב-Iceberg לא תומכות בתצוגות מורשות, אבל הן תומכות בבקרת גישה ברמת העמודה.
- טבלאות מנוהלות בפורמט Iceberg לא תומכות בתוכנית התאוששות מאסון
- טבלאות מנוהלות ב-Iceberg לא תומכות באבטחה ברמת השורה.
- טבלאות מנוהלות בפורמט Iceberg לא תומכות בחלונות של מצב בטוח.
- טבלאות מנוהלות ב-Iceberg לא תומכות במשימות חילוץ.
- התצוגה
INFORMATION_SCHEMA.TABLE_STORAGEלא כוללת טבלאות מנוהלות של Iceberg. - אי אפשר להשתמש בטבלאות מנוהלות של Iceberg כיעדים לתוצאות של שאילתות. במקום זאת, אפשר להשתמש בהצהרת
CREATE TABLEעם הארגומנטAS query_statementכדי ליצור טבלה כיעד של תוצאת השאילתה. - ב-
CREATE OR REPLACEאי אפשר להחליף טבלאות רגילות בטבלאות מנוהלות בפורמט Iceberg, או טבלאות מנוהלות בפורמט Iceberg בטבלאות רגילות. - טעינת אצווה והצהרות
LOAD DATAתומכות רק בהוספת נתונים לטבלאות מנוהלות קיימות של Iceberg. - אין תמיכה בעדכוני סכימה בטעינה של קבוצות פריטים ובהצהרות של
LOAD DATA. -
TRUNCATE TABLEלא תומך בטבלאות מנוהלות של Iceberg. יש שתי חלופות:-
CREATE OR REPLACE TABLE, באמצעות אותן אפשרויות ליצירת טבלה. -
DELETE FROMtableWHEREtrue
-
- הפונקציה
APPENDStable-valued function (TVF) לא תומכת בטבלאות מנוהלות של Iceberg. - יכול להיות שהמטא-נתונים של Iceberg לא יכללו נתונים שהועברו בסטרימינג ל-BigQuery באמצעות Storage Write API ב-90 הדקות האחרונות.
- גישה עם עימוד מבוסס-רשומה באמצעות
tabledata.listלא תומכת בטבלאות מנוהלות של Iceberg. - רק פקודת DML אחת לשינוי (
UPDATE,DELETEו-MERGE) פועלת בו-זמנית לכל טבלה מנוהלת של Iceberg. הצהרות נוספות של DML לשינוי נתונים מתווספות לתור.