דגימת נתונים מאפשרת לכם לבחון את הנתונים בכל שלב בצינור 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
המשך
--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))
המשך
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.
עם זאת, אי אפשר להסתיר את הקלט והפלט ממחברי קלט/פלט, אלא אם משנים את קוד המקור של המחבר כדי לעשות זאת.
חיוב
כש-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 לא יכול לכתוב את נתוני הדוגמה.
- אי אפשר לדגום נתונים מאיטרבלים. לא ניתן להציג דוגמאות לשידורים מהסוגים האלה.