העברה של טבלאות Delta Lake ל-Lakehouse ללא גבולות יכולה להיות מורכבת ויקרה אם צריך להעביר כמויות גדולות של נתונים. כלי בניית המשימות של Dataflow מספק ממשק עם תכנות מינימלי או בלי צורך בתכנות, שמאפשר לייבא את טבלאות Cloud Storage Delta Lake ישירות ל-Lakehouse. הנתונים הקיימים מועתקים מטבלת Delta Lake לטבלת Lakehouse היעד באמצעות משימת Dataflow שמתבצעת בהתאמה אוטומטית של קנה המידה על סמך נפח הנתונים.
במקרה של טבלאות חדשות, Dataflow יוצר את הסכימה באופן אוטומטי. בטבלאות קיימות, הסכימה לא משתנה, ולכן הסכימה של טבלת היעד צריכה להיות ממופה בצורה נכונה לטבלת המקור Delta Lake כדי שהעבודה תצליח.
אפשר להשתמש בפרטי החיבור הבאים כדי לייבא נתונים מטבלת Delta Lake שמאוחסנת ב-Cloud Storage.
אחרי שמייבאים את הנתונים האלה, אפשר להפעיל העברה רציפה.
לפני שמתחילים
כדי לייבא נתונים מטבלת Delta Lake, אתם צריכים:
מפעילים את ממשקי ה-API של Dataflow, BigQuery ו-Lakehouse, אם הם עדיין לא מופעלים.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםכדי לקבל את ההרשאות שדרושות ליצירת המשאבים, צריך לבקש מהאדמין להקצות לכם את התפקידים הנדרשים בניהול הזהויות והרשאות הגישה (IAM) בפרויקט.
טבלת Delta Lake קיימת שמאוחסנת בקטגוריה של Cloud Storage. הספרייה של הטבלה צריכה להיות ספריית הבסיס של טבלת Delta Lake תקינה, שמכילה את קובצי הנתונים בפורמט Parquet ואת ספריית יומן העסקאות
_delta_log/.קטלוג, מרחב שמות וטבלה של Lakehouse Iceberg שאליהם רוצים לייבא את הנתונים.
תמיכה ומגבלות
יש מגבלות על ייבוא נתונים מטבלה של Delta Lake אל Lakehouse באמצעות Dataflow:
- כדי להשתמש בתכונה הזו, צריך להשתמש במשימת צינור (pipeline) של עיבוד אצווה.
- בטבלאות יעד קיימות, הסכימה לא משתנה. הסכימה של טבלת היעד צריכה להיות ממופה בצורה נכונה לסכימה של טבלת המקור Delta Lake.
- נתוני המקור צריכים להיות טבלה תקינה של Delta Lake שמאוחסנת ב-Cloud Storage. תיקיית השורש של הטבלה חייבת להכיל את קובצי הנתונים בפורמט Parquet ואת
_delta_log/ספריית יומן העסקאות (שמכילה קובצי יומן בפורמט JSON או Parquet) כפי שנוצרו על ידי Delta Lake. - אין תמיכה ב-Amazon S3 כמקור לטבלאות Delta Lake.
ייבוא טבלה של Delta Lake
כדי לייבא טבלת Delta Lake אל Lakehouse:
במסוף Google Cloud , נכנסים לדף קטלוג ייעודי לזמן ריצה של Lakehouse.
בוחרים את הקטלוג, מרחב השמות והטבלה שאליהם רוצים לייבא נתונים.
בדף Table details, לוחצים על Import table ואז בוחרים באפשרות From Delta Lake (Batch).
הדף Job builder של Dataflow נפתח עם טיוטת התוכנית Delta Lake to Lakehouse.
בקטע מקורות:
כדי להרחיב את חלונית המקור Delta Lake table ReadFromDeltaLake, לוחצים על חץ ההרחבה .
בשדה Table path (נתיב הטבלה), מזינים את ה-URI של Cloud Storage של תיקיית השורש של טבלת Delta Lake (הספרייה שמכילה את קובצי הנתונים ואת הספרייה
_delta_log/). לדוגמה:gs://BUCKET_NAME/tables/TABLE_NAME.אופציונלי: בשדה Hadoop configuration properties (מאפייני ההגדרה של Hadoop), מגדירים מאפייני הגדרה נוספים של Hadoop שנדרשים לקריאה מ-Cloud Storage. לדוגמה:
fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem.לוחצים על סיום.
בקטע Sink (יעד):
אופציונלי: בודקים את חלונית היעד WriteToIceberg Lakehouse table. המידע בחלונית הזו, כמו טבלת Lakehouse, שם הקטלוג ומיקום המחסן, בדרך כלל מאוכלס מראש.
לוחצים על סיום.
בקטע Dataflow options (אפשרויות Dataflow), לוחצים על Run job (הפעלת עבודה).
אם אתם צריכים להתאים אישית עוד יותר את צינור עיבוד הנתונים של Dataflow שמשמש לייבוא טבלאות של Delta Lake, אתם יכולים לעשות זאת באמצעות טופס ליצירת משימות או באמצעות עורך ה-YAML.
בדיקת הפלט של המשרה
אחרי שהמשימה מסתיימת, אפשר להריץ שאילתה ב-BigQuery כדי לוודא שהנתונים הועתקו לטבלת Lakehouse.
ברשימת משימות Dataflow, בודקים שהסטטוס של המשימה הוא Succeeded.
אם העבודה נכשלת או שיש בה שגיאות, כדאי לבדוק את יומני העבודה או יומני העובדים כדי לקבל פרטים.
במסוף Google Cloud , עוברים לדף Studio של BigQuery.
בעורך השאילתות, מזינים שאילתת SQL כדי לבדוק את הטבלה. אפשר להשתמש במוסכמה
PROJECT_ID.CATALOG.NAMESPACE.TABLE_NAMEכדי לשלוח שאילתות:SELECT * FROM `PROJECT_ID`.`CATALOG`.`NAMESPACE`.`TABLE_NAME` LIMIT 10;לוחצים על הפעלה.
בודקים את תוצאות השאילתה כדי לוודא שהנתונים עובדו בצורה נכונה.
זה שינוי אופציונלי. הפעלת העברה רציפה
כדי להגדיר העברה רציפה מקצה לקצה מ-Delta Lake ל-Lakehouse, צריך לבצע את רצף הפעולות הבא:
- הפעלת המאפיין
delta.enableChangeDataFeedבטבלת הקלט של Delta Lake. - מבצעים העברה ראשונית של הטבלה למזהה commit או לחותמת זמן אחרי שמגדירים את המאפיין
delta.enableChangeDataFeed. - מריצים משימות CDC מתוזמנות לנתונים הבאים באמצעות תדירות (מזהה אישור או טווח חותמות זמן) שנבחרה בהתאם לדרישות עומס העבודה.
מידע נוסף זמין במאמר בנושא העברת נתונים של סימון נתונים שהשתנו (CDC) מ-Delta Lake אל Lakehouse באמצעות Dataflow.
המאמרים הבאים
- מידע נוסף זמין במאמר מבוא לטבלאות Lakehouse ב-Apache Iceberg ב-BigQuery.
- מידע נוסף על העברה תקופתית של נתוני CDC של Delta Lake אל Lakehouse
- מידע נוסף על הטמעה של נתונים לשינוי ב-Lakehouse
- איך יוצרים משימה בהתאמה אישית באמצעות ממשק המשתמש של כלי יצירת המשימות