כשיוצרים טבלה ב-Apache Iceberg, המטא-נתונים של הטבלה נרשמים במרחב שמות בקטלוג זמן הריצה של Lakehouse.
אם לא מציינים מיקום אחסון מפורש ברמת מרחב השמות או הטבלה במהלך יצירת הטבלה, המערכת יוצרת באופן אוטומטי את המטא-נתונים של הטבלה ואת ספריות הנתונים שלה במיקום ברירת המחדל של הקטלוג (שנגזר מקטגוריית הבסיס של Cloud Storage בקטלוג) על ידי צירוף של מזהי מרחב השמות והטבלה.
לפני שמתחילים
בסקירה הכללית של הטבלה מוסבר על הסוגים השונים של הטבלאות ועל ההשלכות של השימוש בהן.
יש תמיכה רק בטבלאות Apache Iceberg V2 (זמינות כללית) ו-V3 (גרסת Preview). אין תמיכה בטבלאות Iceberg V1. כדי לשדרג טבלאות קיימות בגרסה 1, אפשר לעיין במאמר שדרוג טבלאות Iceberg מגרסה 1 לגרסה 2.
-
מפעילים את BigLake API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת טבלה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט ובקטגוריית האחסון:
-
הכול:
- אדמין BigLake (
roles/biglake.admin) – הפרויקט שלכם - אדמין לניהול נפח האחסון (
roles/storage.admin) – קטגוריה של Cloud Storage
- אדמין BigLake (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
צור טבלה
יוצרים טבלת Iceberg.
המסוף
במסוף Google Cloud , עוברים אל Lakehouse.
בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם קטלוג.
בסרגל התפריטים, לוחצים על +יצירת טבלה.
בקטע פורמט טבלה, בוחרים באפשרות Iceberg.
בשדה שם הטבלה, מזינים שם ייחודי לטבלה.
לוחצים על יצירה.
הטבלה מופיעה בדף פרטי מרחב השמות.
Spark
spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
מחליפים את הערכים הבאים:
-
NAMESPACE_NAME: השם של מרחב השמות -
TABLE_NAME: שם לטבלה
Trino
CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);
DESCRIBE SCHEMA_NAME.TABLE_NAME;
מחליפים את הערכים הבאים:
-
SCHEMA_NAME: השם של הסכימה -
TABLE_NAME: שם לטבלה
אם אתם משתמשים באיחוד קטלוגים של BigQuery עם Trino, אתם לא יכולים לציין מיקום לטבלה. תמיד נעשה שימוש במיקום ברירת המחדל של הסכימה.
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.
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: השם של מרחב השמות של הקטלוג.