קלט/פלט מנוהל של Dataflow ל-Apache Iceberg

Managed I/O תומך ביכולות הבאות של Apache Iceberg:

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

כדי להשתמש בטבלאות BigQuery ל-Apache Iceberg, צריך להשתמש במחבר BigQueryIO עם BigQuery Storage API. הטבלה צריכה כבר להיות קיימת. אי אפשר ליצור טבלה דינמית.

דרישות

ערכות ה-SDK הבאות תומכות ב-I/O מנוהל ל-Apache Iceberg:

  • ‫Apache Beam SDK for Java בגרסה 2.58.0 ואילך
  • ‫Apache Beam SDK ל-Python בגרסה 2.61.0 ואילך

הגדרות אישיות

‫Managed I/O for Apache Iceberg תומך בפרמטרים הבאים של ההגדרה:

ICEBERG קריאה

הגדרות אישיות סוג תיאור
table str מזהה של טבלת Iceberg.
catalog_name str השם של הקטלוג שמכיל את הטבלה.
catalog_properties map[str, str] מאפיינים שמשמשים להגדרת קטלוג Iceberg.
config_properties map[str, str] מאפיינים שמועברים להגדרות של Hadoop.
ירידה list[str] קבוצת משנה של שמות עמודות שרוצים להחריג מקריאה. אם הערך הוא null או ריק, כל העמודות ייקראו.
מסנ str פרדיקט שדומה ל-SQL לסינון נתונים בזמן הסריקה. דוגמה: "id > 5 AND status = 'ACTIVE'". משתמש בתחביר של Apache Calcite: ‏ https://calcite.apache.org/docs/reference.html
keep list[str] קבוצת משנה של שמות עמודות לקריאה בלבד. אם הערך הוא null או ריק, כל העמודות ייקראו.

ICEBERG כתיבה

הגדרות אישיות סוג תיאור
table str מזהה טבלה מוגדר במלואו. אפשר גם לספק תבנית לכתיבה למספר יעדים דינמיים, לדוגמה: ‎`dataset.my_{col1}_{col2.nested}_table`‎.
חלוקה אוטומטית של נתונים boolean ההגדרה הזו מאפשרת חלוקה דינמית למקטעים, כדי להתאים באופן אוטומטי את מספר הכותבים המקבילים על סמך נפח הנתונים. הוא מטפל בהטיה של הנתונים על ידי חלוקה נוספת של המחיצות לכמה רסיסים כדי למנוע צווארי בקבוק במהלך כתיבות עם תפוקה גבוהה. האפשרות הזו זמינה רק במצב ההפצה 'hash'.
catalog_name str השם של הקטלוג שמכיל את הטבלה.
catalog_properties map[str, str] מאפיינים שמשמשים להגדרת קטלוג Iceberg.
config_properties map[str, str] מאפיינים שמועברים להגדרות של Hadoop.
direct_write_byte_limit int32 בצינור עיבוד נתונים (pipeline) של סטרימינג, המגבלה הזו קובעת את מספר החבילות שאפשר להעביר לנתיב הכתיבה הישיר.
distribution_mode str הגדרה של התפלגות נתוני הכתיבה. הפצות נתמכות: - none: לא מבצעים ערבוב של השורות (ברירת מחדל) - hash: ערבוב של השורות לפי מפתח המחיצה לפני כתיבת הנתונים
ירידה list[str] רשימה של שמות שדות שיוסרו מרשומת הקלט לפני הכתיבה. הערך הזה לא יכול להיות ביחד עם הערכים keep ו-only.
keep list[str] רשימה של שמות שדות שרוצים לשמור ברשומת הקלט. המערכת משמיטה את כל שאר השדות לפני הכתיבה. הערך הזה לא יכול להיות זהה לערכים drop או only.
רק str השם של שדה רשומה יחיד שצריך לכתוב. הערך הזה לא יכול להיות זהה לערכים 'שמירה' ו 'הסרה'.
partition_fields list[str] שדות שמשמשים ליצירת מפרט מחיצה שמוחל כשיוצרים טבלאות. עבור השדה foo, הטרנספורמציות הזמינות של המחיצה הן:
  • foo
  • truncate(foo, N)
  • bucket(foo, N)
  • hour(foo)
  • day(foo)
  • month(foo)
  • year(foo)
  • void(foo)

מידע נוסף על טרנספורמציות של מחיצות זמין בכתובת https://iceberg.apache.org/spec/#partition-transforms.

sort_fields list[str] השדות שמשמשים להגדרת סדר המיון של הטבלה, שמוחל כשהטבלה נוצרת. כל רשומה היא מהצורה <term> [asc|desc] [nulls first|nulls last], כאשר <term> הוא שם שדה או אחת מהטרנספורמציות של החלוקה למחיצות (למשל bucket(col, 4),‏ day(ts)). כיוון ברירת המחדל הוא בסדר עולה, וסדר ברירת המחדל של ערכי null הוא nulls-first בסדר עולה ו-nulls-last בסדר יורד. הערה: הפעולה הזו מגדירה את סדר המיון המוצהר של הטבלה כמטא-נתונים, אבל היא לא גורמת ל-Beam למיין פיזית את הרשומות לפני הכתיבה. מידע נוסף על סדר מיון זמין בכתובת https://iceberg.apache.org/spec/#sort-orders.
table_properties map[str, str] מאפייני טבלה של Iceberg שיוגדרו בטבלה כשהיא תיצור. מידע נוסף על מאפייני טבלה זמין בכתובת https://iceberg.apache.org/docs/latest/configuration/#table-properties.
triggering_frequency_seconds int32 בצינור עיבוד זרמי נתונים, ההגדרה הזו קובעת את התדירות שבה נוצרות תמונות מצב.

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

מידע נוסף ודוגמאות קוד זמינים בנושאים הבאים: