דגימת נתונים מאפשרת לכם לבחון את הנתונים בכל שלב בצינור Dataflow. המידע הזה יכול לעזור לכם לנפות באגים בצינור הנתונים, כי הוא מציג את הקלט והפלט בפועל בעבודה שמתבצעת או שהושלמה.
דוגמאות לשימושים בדגימת נתונים:
במהלך הפיתוח, אפשר לראות אילו רכיבים נוצרים לאורך תהליך העיבוד.
אם צינור העברת נתונים יוצר חריגה, אפשר לראות את הרכיבים שקשורים לחריגה הזו.
כשמבצעים ניפוי באגים, כדאי להציג את הפלט של טרנספורמציות כדי לוודא שהפלט נכון.
להבין את ההתנהגות של צינור עיבוד נתונים בלי לבדוק את הקוד שלו.
אפשר להציג את הרכיבים שנדגמו בשלב מאוחר יותר, אחרי שהעבודה מסתיימת, או להשוות את הנתונים שנדגמו לריצה קודמת.
סקירה כללית
אפשר לדגום נתונים בצינור עיבוד נתונים של Dataflow בדרכים הבאות:
דגימה תקופתית. בסוג הזה של דגימה, Dataflow אוסף דגימות בזמן שהמשימה פועלת. אתם יכולים להשתמש בנתונים שנדגמו כדי לבדוק אם צינור עיבוד הנתונים מעבד את הרכיבים כצפוי, וכדי לאבחן בעיות בזמן הריצה, כמו מקשי קיצור או פלט שגוי. מידע נוסף זמין בקטע שימוש בדגימת נתונים תקופתית במאמר הזה.
דגימת חריגים. בסוג הזה של דגימה, Dataflow אוסף דגימות אם צינור העברת נתונים יוצר חריגה. אפשר להשתמש בדוגמאות כדי לראות את הנתונים שעברו עיבוד כשהחריגה התרחשה. דגימת חריגים מופעלת כברירת מחדל, ואפשר להשבית אותה. מידע נוסף זמין במאמר הזה בקטע שימוש בדגימת חריגים.
Dataflow כותב את הרכיבים שנדגמו לנתיב Cloud Storage שצוין באפשרות gcpTempLocation של צינור העיבוד ל-Java ובאפשרות temp_location ל-Python ול-Go. אפשר לראות את הנתונים שנדגמו במסוף Google Cloud או לבדוק את קובצי הנתונים הגולמיים ב-Cloud Storage. הקבצים נשמרים ב-Cloud Storage עד שאתם מוחקים אותם.
דגימת הנתונים מתבצעת על ידי העובדים של Dataflow. הדגימה מתבצעת על בסיס המאמץ הטוב ביותר. יכול להיות שדגימות יושמטו אם יתרחשו שגיאות זמניות.
דרישות
כדי להשתמש בדגימת נתונים, צריך להפעיל את Runner v2. מידע נוסף זמין במאמר הפעלת Dataflow Runner v2.
כדי לראות את הנתונים שנדגמו במסוף Google Cloud , אתם צריכים את ההרשאות הבאות לניהול זהויות והרשאות גישה (IAM):
storage.buckets.getstorage.objects.getstorage.objects.list
דגימה תקופתית מחייבת את Apache Beam SDK הבא:
- Apache Beam Java SDK גרסה 2.47.0 ואילך
- Apache Beam Python SDK בגרסה 2.46.0 ואילך
- Apache Beam Go SDK בגרסה 2.53.0 ואילך
כדי להשתמש בדגימת חריגים צריך את Apache Beam SDK בגרסה הבאה:
- Apache Beam Java SDK גרסה 2.51.0 ואילך
- Apache Beam Python SDK בגרסה 2.51.0 ואילך
- Apache Beam Go SDK לא תומך בדגימת חריגים.
החל מגרסאות ה-SDK האלה, Dataflow מפעיל כברירת מחדל דגימת חריגים לכל המשימות.
שימוש בדגימת נתונים תקופתית
בקטע הזה מוסבר איך לדגום נתונים מצינור עיבוד נתונים באופן רציף בזמן שהעבודה פועלת.
הפעלה של דגימת נתונים תקופתית
כברירת מחדל, הדגימה התקופתית מושבתת. כדי להפעיל אותה, מגדירים את אפשרות הצינור הבאה:
Java
--experiments=enable_data_sampling
Python
--experiments=enable_data_sampling
Go
--experiments=enable_data_sampling
אפשר להגדיר את האפשרות באופן פרוגרמטי או באמצעות שורת הפקודה. מידע נוסף מופיע במאמר הגדרת אפשרויות של צינורות ניסויים.
כשמריצים תבנית Dataflow, משתמשים בדגל additional-experiments
כדי להפעיל דגימת נתונים:
--additional-experiments=enable_data_sampling
כשדגימה תקופתית מופעלת, Dataflow אוספת דגימות מכל PCollection בתרשים המשימות. תדירות הדגימה היא בערך דגימה אחת כל 30 שניות.
בהתאם לנפח הנתונים, דגימת נתונים תקופתית יכולה להוסיף תקורה משמעותית לביצועים. לכן, אנחנו ממליצים להפעיל את הדגימה התקופתית רק במהלך הבדיקות, ולהשבית אותה בעומסי עבודה של סביבת הייצור.
הצגת נתונים שנדגמו
כדי לראות את הנתונים שנדגמו במסוף Google Cloud , פועלים לפי השלבים הבאים:
נכנסים לדף Jobs של Dataflow במסוף Google Cloud .
בוחרים משרה.
לוחצים על keyboard_capslock בחלונית התחתונה כדי להרחיב את חלונית היומנים.
לוחצים על הכרטיסייה דגימת נתונים.
בשדה Step, בוחרים שלב בצינור. אפשר גם לבחור שלב בתרשים של העבודה.
בשדה Collection, בוחרים באפשרות
PCollection.
אם Dataflow אסף דוגמאות של אותו PCollection, הנתונים שנדגמו יופיעו בכרטיסייה. בכל דוגמה, בכרטיסייה מוצגים תאריך היצירה ורכיב הפלט. רכיב הפלט הוא ייצוג סדרתי של רכיב האוסף, כולל נתוני הרכיב, חותמת הזמן ופרטים על החלון והחלונית.
בדוגמאות הבאות מוצגים רכיבים שנבחרו לדגימה.
Java
TimestampedValueInGlobalWindow{value=KV{way, [21]},
timestamp=294247-01-09T04:00:54.775Z, pane=PaneInfo{isFirst=true, isLast=true,
timing=ON_TIME, index=0, onTimeIndex=0}}
Python
(('THE', 1), MIN_TIMESTAMP, (GloblWindow,), PaneInfo(first: True, last: True,
timing: UNKNOWN, index: 0, nonspeculative_index: 0))
Go
KV<THE,1> [@1708122738999:[[*]]:{3 true true 0 0}]
בתמונה הבאה אפשר לראות איך הנתונים שנדגמו מוצגים במסוףGoogle Cloud .
שימוש בדגימת חריגים
אם צינור העיבוד מעלה חריגה שלא טופלה, אפשר לראות גם את החריגה וגם את רכיב הקלט שקשור לחריגה הזו. דגימת חריגים מופעלת כברירת מחדל כשמשתמשים בApache Beam SDK נתמך.
הצגת חריגים
כדי לראות חריגה:
נכנסים לדף Jobs של Dataflow במסוף Google Cloud .
בוחרים משרה.
כדי להרחיב את החלונית יומנים, לוחצים על keyboard_capslock החלפת חלונית בחלונית יומנים.
לוחצים על הכרטיסייה דגימת נתונים.
בשדה Step, בוחרים שלב בצינור. אפשר גם לבחור שלב בתרשים של העבודה.
בשדה Collection, בוחרים באפשרות
PCollection.בעמודה חריגה מופיעים פרטי החריגה. אין רכיב פלט לחריגה. במקום זאת, בעמודה Output element מופיעה ההודעה
Failed to process input element: INPUT_ELEMENT, כאשר INPUT_ELEMENT הוא רכיב הקלט המתאים.כדי לראות את דוגמת הקלט ואת פרטי החריגה בחלון חדש, לוחצים על פתיחה בחלון חדש.
בתמונה הבאה אפשר לראות איך חריגה מופיעה במסוףGoogle Cloud .
השבתת דגימת חריגים
כדי להשבית את הדגימה של חריגים, מגדירים את אפשרות הצינור הבאה:
Java
--experiments=disable_always_on_exception_sampling
Python
--experiments=disable_always_on_exception_sampling
אפשר להגדיר את האפשרות באופן פרוגרמטי או באמצעות שורת הפקודה. מידע נוסף מופיע במאמר הגדרת אפשרויות של צינורות ניסויים.
כשמריצים תבנית Dataflow, משתמשים בדגל additional-experiments כדי להשבית את הדגימה של חריגים:
--additional-experiments=disable_always_on_exception_sampling
שיקולי אבטחה
Dataflow כותב את הנתונים שנדגמו לקטגוריה של Cloud Storage שאתם יוצרים ומנהלים. כדי להגן על אבטחת הנתונים, אפשר להשתמש בתכונות האבטחה של Cloud Storage. בפרט, כדאי לשקול את אמצעי האבטחה הנוספים הבאים:
- משתמשים במפתח הצפנה בניהול הלקוח (CMEK) כדי להצפין את קטגוריית ה-Cloud Storage. מידע נוסף על בחירת אפשרות ההצפנה זמין במאמר בחירת ההצפנה המתאימה לצרכים שלכם.
- מגדירים זמן לחיים (TTL) בקטגוריה של Cloud Storage, כדי שקבצי הנתונים יימחקו באופן אוטומטי אחרי תקופה מסוימת. מידע נוסף זמין במאמר בנושא קביעת ההגדרה של מחזור החיים לקטגוריה.
- מומלץ להשתמש בעיקרון של הרשאות מינימליות כשמקצים הרשאות IAM לקטגוריה של Cloud Storage.
אפשר גם לערפל שדות ספציפיים בסוג הנתונים PCollection, כך שהערך הגולמי לא יופיע בנתונים שנדגמו:
- Python: מחליפים את השיטה
__repr__או__str__. - Java: מחליפים את השיטה
toString.
עם זאת, אי אפשר לבצע ערפול קוד (obfuscation) של הקלט והפלט ממחברי קלט/פלט, אלא אם משנים את קוד המקור של המחבר כדי לעשות זאת.
חיוב
כש-Dataflow מבצע דגימת נתונים, אתם מחויבים על אחסון הנתונים ב-Cloud Storage ועל פעולות הקריאה והכתיבה ב-Cloud Storage. מידע נוסף זמין במאמר בנושא תמחור של Cloud Storage.
כל עובד של Dataflow כותב דגימות בקבוצות, וכל קבוצה כרוכה בפעולת קריאה אחת ובפעולת כתיבה אחת.
פתרון בעיות
בקטע הזה מפורטות בעיות נפוצות שקשורות לשימוש בדגימת נתונים.
שגיאת הרשאות
אם אין לכם הרשאה לצפות בדוגמאות, השגיאה הבאה תוצג במסוף Google Cloud :
You don't have permission to view a data sample.
כדי לפתור את השגיאה הזו, צריך לוודא שיש לכם את הרשאות ה-IAM הנדרשות. אם השגיאה עדיין מתרחשת, יכול להיות שחל עליכם כלל מדיניות הדחייה של IAM.
לא רואים דוגמאות
אם לא מופיעות דוגמאות, כדאי לבדוק את הדברים הבאים:
- מוודאים שדגימת הנתונים מופעלת על ידי הגדרת האפשרות
enable_data_sampling. איך מפעילים דגימת נתונים - מוודאים שאתם משתמשים ב-Runner v2
- מוודאים שהעובדים התחילו לעבוד. הדגימה מתחילה רק אחרי שהעובדים מתחילים לעבוד.
- מוודאים שהעבודה והעובדים במצב תקין.
- בודקים שוב את המכסות של Cloud Storage בפרויקט. אם חורגים ממגבלות מכסת האחסון ב-Cloud Storage, Dataflow לא יכול לכתוב את נתוני הדגימה.
- אי אפשר לדגום נתונים מאיטרבלים. לא ניתן להציג דוגמאות לשידורים מהסוגים האלה.