ייבוא טבלאות Delta Lake ל-Lakehouse באמצעות Dataflow

הכלי לבניית משימות ב-Dataflow מאפשר לייבא טבלאות Delta Lake מ-Cloud Storage ישירות ל-Lakehouse ללא גבולות, באמצעות ממשק עם תכנות מינימלי או בלי צורך בקוד. כך אפשר להפחית את המורכבות של העברות נתונים בקנה מידה גדול. משימת אצווה של Dataflow עם התאמה אוטומטית לעומס מעתיקה את הנתונים לטבלת היעד של Apache Iceberg ב-Lakehouse, ויוצרת באופן אוטומטי את הסכימה לטבלאות חדשות. בטבלאות קיימות נדרשת סכימה תואמת.

אחרי שמייבאים את הנתונים, אפשר להפעיל העברה רציפה.

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

כדי לייבא נתוני טבלה של Delta Lake, צריך:

  1. מפעילים את ממשקי ה-API של Dataflow, ‏BigQuery ו-Lakehouse, אם הם עדיין לא מופעלים.

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

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

    הפעלת ממשקי ה-API

  2. כדי לקבל את ההרשאות שדרושות ליצירת המשאבים, צריך לבקש מהאדמין להקצות לכם את התפקידים הנדרשים בממשק של ניהול הזהויות והרשאות הגישה (IAM) בפרויקט.

  3. טבלת Delta Lake קיימת שמאוחסנת בקטגוריה של Cloud Storage. ספריית הטבלה חייבת להיות ספריית שורש תקינה של טבלת Delta Lake, שמכילה את קובצי הנתונים של Parquet ואת ספריית יומן העסקאות _delta_log/.

  4. קטלוג, מרחב שמות וטבלה של Lakehouse Iceberg שאליהם מייבאים את הנתונים.

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

לייבוא של נתוני טבלאות Delta Lake ל-Lakehouse באמצעות Dataflow יש את המגבלות הבאות:

  • כדי להשתמש בתכונה הזו, צריך להשתמש במשימת צינור עיבוד נתונים באצווה.
  • בטבלאות יעד קיימות, הסכימה לא משתנה. הסכימה של טבלת היעד צריכה להיות ממופה בצורה נכונה לסכימה של טבלת המקור ב-Delta Lake.
  • נתוני המקור צריכים להיות טבלת Delta Lake תקינה שמאוחסנת ב-Cloud Storage. תיקיית השורש של הטבלה חייבת להכיל את קובצי הנתונים של Parquet ואת תיקיית יומן העסקאות של _delta_log/ (שמכילה קובצי יומן של JSON או Parquet) שנוצרו על ידי Delta Lake.
  • אין תמיכה ב-Amazon S3 למקורות של טבלאות Delta Lake.

ייבוא טבלת Delta Lake

כדי לייבא טבלת Delta Lake ל-Lakehouse:

  1. במסוף Google Cloud , נכנסים לדף קטלוג ייעודי לזמן ריצה של Lakehouse.

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

  2. בוחרים את הקטלוג, מרחב השמות והטבלה שאליהם רוצים לייבא נתונים.

  3. בדף Table details, לוחצים על Import table ובוחרים באפשרות From Delta Lake (Batch).

    הדף Job builder של Dataflow נפתח עם התוכנית Delta Lake to Lakehouse.

  4. בקטע מקורות:

    1. כדי להרחיב את חלונית המקור ReadFromDeltaLake Delta Lake table, לוחצים על החץ להרחבה.

    2. בשדה Table path, מזינים את ה-URI של Cloud Storage של תיקיית השורש של טבלת Delta Lake (הספרייה שמכילה את קובצי הנתונים ואת הספרייה _delta_log/). לדוגמה: gs://BUCKET_NAME/tables/TABLE_NAME.

    3. אופציונלי: בשדה Hadoop configuration properties, מגדירים מאפייני תצורה נוספים של Hadoop שנדרשים כדי לקרוא מ-Cloud Storage. לדוגמה: fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem.

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

  5. בקטע Sink:

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

    2. לוחצים על סיום.

  6. בקטע Dataflow options, לוחצים על Run job.

אם אתם צריכים להתאים אישית את צינור עיבוד הנתונים של Dataflow שמשמש לייבוא טבלאות Delta Lake, אתם יכולים לעשות את זה באמצעות הטופס של הכלי ליצירת משימות או באמצעות עורך ה-YAML.

בדיקת הפלט של המשימה

אחרי שהמשימה מסתיימת, אתם יכולים לוודא שהנתונים הועתקו לטבלה ב-Lakehouse על ידי שליחת שאילתה ב-BigQuery.

  1. ברשימת המשימות של Dataflow, מוודאים שהסטטוס של המשימה הוא Succeeded.

    כניסה לדף Jobs

  2. אם המשימה נכשלת או שיש בה שגיאות, בודקים את הפרטים ביומני המשימות או ביומני ה-worker.

  3. נכנסים לדף BigQuery Studio במסוף Google Cloud .

    כניסה ל-BigQuery

  4. בעורך השאילתות, מזינים שאילתת SQL כדי לבדוק את הטבלה. אפשר להשתמש במוסכמה PROJECT_ID.CATALOG.NAMESPACE.TABLE_NAME כדי לשלוח שאילתות:

    SELECT * FROM `PROJECT_ID`.`CATALOG`.`NAMESPACE`.`TABLE_NAME` LIMIT 10;
    
  5. לוחצים על הפעלה.

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

זה שינוי אופציונלי. הפעלת העברה רציפה

כדי להגדיר העברה רציפה מקצה לקצה מ-Delta Lake ל-Lakehouse, מבצעים את הפעולות הבאות:

  1. מפעילים את המאפיין delta.enableChangeDataFeed בטבלת הקלט של Delta Lake.
  2. מבצעים העברה ראשונית של טבלה למזהה commit או לחותמת זמן אחרי שמגדירים את המאפיין delta.enableChangeDataFeed.
  3. מריצים משימות CDC מתוזמנות לנתונים הבאים, בתדירות (מזהה commit או טווח חותמות זמן) שמתאימה לדרישות של עומס העבודה.

מידע נוסף זמין במאמר העברת נתוני Delta Lake של סימון נתונים שהשתנו (CDC) ל-Lakehouse באמצעות Dataflow.

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