Apache Beam מפשטת את תהליך העבודה של העשרת הנתונים באמצעות טרנספורמציה מוכנה מראש להעשרה שאפשר להוסיף לצינור הנתונים. בדף הזה מוסבר איך להשתמש בטרנספורמציית ההעשרה של Apache Beam כדי להעשיר את נתוני הסטרימינג.
כשמעשירים נתונים, מוסיפים לנתונים הגולמיים ממקור אחד נתונים קשורים ממקור שני. הנתונים הנוספים יכולים להגיע ממגוון מקורות, כמו Bigtable או BigQuery. הטרנספורמציה של העשרה ב-Apache Beam משתמשת בחיפוש של זוגות מפתח/ערך כדי לקשר את הנתונים הנוספים לנתונים הגולמיים.
הנה כמה דוגמאות למקרים שבהם העשרת נתונים יכולה להיות שימושית:
- אתם רוצים ליצור צינור למסחר אלקטרוני שמתעד פעילויות של משתמשים באתר או באפליקציה ומספק המלצות מותאמות אישית. הטרנספורמציה משלבת את הפעילויות בנתוני צינור המכירות כדי שתוכלו לספק את ההמלצות המותאמות אישית.
- יש לכם נתוני משתמשים שאתם רוצים לצרף לנתונים גיאוגרפיים כדי לבצע ניתוח גיאוגרפי.
- אתם רוצים ליצור צינור להעברת נתונים שמקבל נתונים ממכשירי אינטרנט של הדברים (IoT) ששולחים אירועי טלמטריה.
יתרונות
היתרונות של טרנספורמציית ההעשרה:
- הוא משנה את הנתונים בלי שתצטרכו לכתוב קוד מורכב או לנהל ספריות בסיסיות.
- מספקת רכיבי handler מובנים של מקורות.
- אפשר להשתמש ב-handler
BigTableEnrichmentHandlerכדי להעשיר את הנתונים באמצעות מקור Bigtable בלי להעביר פרטי הגדרה. - אפשר להשתמש ב-handler
BigQueryEnrichmentHandlerכדי להעשיר את הנתונים באמצעות מקור BigQuery בלי להעביר פרטי הגדרה. - שימוש ב-handler
VertexAIFeatureStoreEnrichmentHandlerעם Vertex AI Feature Store והגשה אונליין של Bigtable.
- אפשר להשתמש ב-handler
- משתמשים בהגבלת קצב יצירת בקשות בצד הלקוח כדי לנהל את הגבלת קצב יצירת הבקשות. הבקשות מושהות באופן מעריכי לפני ניסיון חוזר, עם אסטרטגיית ניסיון חוזר שמוגדרת כברירת מחדל. אתם יכולים להגדיר הגבלת קצב בהתאם לתרחיש השימוש שלכם.
תמיכה ומגבלות
הדרישות לטרנספורמציה של העשרה הן:
- האפשרות הזו זמינה לצינורות עיבוד נתונים באצווה ולצינורות עיבוד נתונים בסטרימינג.
- ה-handler
BigTableEnrichmentHandlerזמין ב-Apache Beam Python SDK בגרסה 2.54.0 ואילך. - הפונקציה לטיפול ב-
BigQueryEnrichmentHandlerזמינה בגרסאות 2.57.0 ואילך של Apache Beam Python SDK. - הפונקציה
VertexAIFeatureStoreEnrichmentHandlerזמינה בגרסאות 2.55.0 ואילך של Apache Beam Python SDK. - כשמשתמשים ב-Apache Beam Python SDK בגרסה 2.55.0 ואילך, צריך גם להתקין את לקוח Python ל-Redis.
- משימות Dataflow חייבות להשתמש ב-Portable Runner.
שימוש בטרנספורמציה להעשרה
כדי להשתמש בטרנספורמציה להוספת פרטים, צריך לכלול את הקוד הבא בצינור:
import apache_beam as beam
from apache_beam.transforms.enrichment import Enrichment
from apache_beam.transforms.enrichment_handlers.bigtable import BigTableEnrichmentHandler
bigtable_handler = BigTableEnrichmentHandler(...)
with beam.Pipeline() as p:
output = (p
...
| "Create" >> beam.Create(data)
| "Enrich with Bigtable" >> Enrichment(bigtable_handler)
...
)
כברירת מחדל, טרנספורמציית ההעשרה מבצעת איחוד צולב, ולכן צריך לעצב את האיחוד המותאם אישית כדי להעשיר את נתוני הקלט. העיצוב הזה מבטיח שההצטרפות תכלול רק את השדות שצוינו.
בדוגמה הבאה, left הוא רכיב הקלט של טרנספורמציית ההעשרה, ו-right הם נתונים שנשלפו משירות חיצוני עבור רכיב הקלט הזה.
def custom_join(left: Dict[str, Any], right: Dict[str, Any]):
enriched = {}
enriched['FIELD_NAME'] = left['FIELD_NAME']
...
return beam.Row(**enriched)
פרמטרים
כדי להשתמש בטרנספורמציה להעשרת נתונים, צריך להשתמש בפרמטר EnrichmentHandler.
אפשר גם להשתמש בפרמטר הגדרה כדי לציין פונקציית lambda עבור פונקציית join, פסק זמן, מגביל או חוזר (אסטרטגיה לניסיון חוזר). הפרמטרים הבאים של ההגדרה זמינים:
-
join_fn: פונקציהlambdaשמקבלת מילונים כקלט ומחזירה שורה מועשרת (Callable[[Dict[str, Any], Dict[str, Any]], beam.Row]). השורה המועשרת מציינת איך לצרף את הנתונים שאוחזרו מה-API. ברירת המחדל היא cross join. -
timeout: מספר השניות להמתנה עד לסיום הבקשה על ידי ה-API לפני שפג הזמן הקצוב לתפוגה. ברירת המחדל היא 30 שניות. -
throttler: מציין את מנגנון ויסות הנתונים. האפשרות היחידה שנתמכת היא הגבלת קצב דינמית מצד הלקוח שמוגדרת כברירת מחדל. -
repeater: מציין את אסטרטגיית הניסיון החוזר כשמתרחשות שגיאות כמוTooManyRequestsו-TimeoutException. ברירת המחדל היאExponentialBackOffRepeater.
המאמרים הבאים
- דוגמאות נוספות זמינות במאמר Enrichment transform בקטלוג הטרנספורמציות של Apache Beam.
- שימוש ב-Apache Beam וב-Bigtable כדי להעשיר נתונים.
- שימוש ב-Apache Beam וב-BigQuery כדי להעשיר נתונים
- שימוש ב-Apache Beam וב-Vertex AI Feature Store כדי להעשיר נתונים.