אפשר לבצע עיבוד נתונים ב-Dataflow במקביל. חלק גדול מהמקביליות הזו מטופל אוטומטית על ידי Dataflow. מחברי קלט/פלט (I/O) נמצאים בגבול בין צינור הנתונים לבין חלקים אחרים בארכיטקטורה, כמו אחסון קבצים, מסדי נתונים ומערכות העברת הודעות. לכן, לרוב יש שיקולים ספציפיים לגבי מחברי קלט/פלט כדי להשיג מקביליות.
המלצות כלליות
בקטע הזה מפורטות שיטות מומלצות כלליות לשימוש במחברי קלט/פלט ב-Dataflow.
קוראים את ה-Javadoc, Pydoc או את התיעוד של Go לגבי המחברים בצינור. מידע נוסף זמין במאמר בנושא מחברי קלט/פלט במסמכי התיעוד של Apache Beam.
להשתמש בגרסה העדכנית של Apache Beam SDK. אנחנו כל הזמן משפרים את מחברי ה-I/O, מוסיפים תכונות ופותרים בעיות ידועות.
כשמפתחים צינור, חשוב לאזן את המקביליות של העבודה. אם רמת ההקבלה של משימה נמוכה מדי, היא עלולה להיות איטית, והנתונים עלולים להצטבר במקור. עם זאת, אם יש יותר מדי מקביליות, יכול להיות שיהיו יותר מדי בקשות ליעד.
אל תסתמכו על הסדר של האלמנטים. באופן כללי, Dataflow לא מבטיח את סדר הרכיבים באוסף.
אם מחבר קלט/פלט לא זמין ב-SDK שבחרתם, כדאי להשתמש במסגרת חוצת-שפות כדי להשתמש במחבר קלט/פלט מ-SDK אחר. בנוסף, לא תמיד יש התאמה בין התכונות של מחברים שונים בערכות SDK שונות. אם מחבר מ-SDK אחר מספק תכונה שאתם צריכים, אתם יכולים להשתמש בו כטרנספורמציה חוצת-שפות.
באופן כללי, כתיבת מחברים מותאמים אישית של קלט/פלט היא משימה מאתגרת. כדאי להשתמש במחבר קיים כשאפשר. אם אתם צריכים להטמיע מחבר קלט/פלט בהתאמה אישית, כדאי לקרוא את המאמר פיתוח מחבר קלט/פלט חדש.
אם צינור עיבוד נתונים נכשל, צריך לבדוק אם יש שגיאות שנרשמו על ידי מחברי קלט/פלט. פתרון בעיות ב-Dataflow
כשמבצעים פעולות כתיבה מ-Dataflow למחבר, מומלץ להשתמש ב-ErrorHandler כדי לטפל בפעולות כתיבה שנכשלו או בפעולות קריאה לא תקינות. הטיפול הזה בשגיאות נתמך בקלט/פלט הבא של Java ב-Apache Beam בגרסה 2.55.0 ואילך:
BigQueryIO,BigtableIO,PubSubIO,KafkaIO,FileIO,TextIOו-AvroIO.
דוגמה למדדי ביצועים בצינור (pipeline) של Dataflow streaming מופיעה במאמר מאפייני הביצועים של צינורות Pub/Sub ל-BigQuery.
שיטות מומלצות לשימוש במחברים נפרדים של קלט/פלט
בנושאים הבאים מפורטות שיטות מומלצות לשימוש במחברי קלט/פלט נפרדים:
| מחבר קלט/פלט | קריאה | כתיבה |
|---|---|---|
| Apache Iceberg | קריאה מ-Apache Iceberg | כתיבה ל-Apache Iceberg |
| Apache Kafka | קריאה מ-Apache Kafka | כתיבה ל-Apache Kafka |
| BigQuery | קריאה מ-BigQuery | כתיבה ל-BigQuery |
| Bigtable | קריאה מ-Bigtable | כתיבה ל-Bigtable |
| Cloud Storage | קריאה מ-Cloud Storage | כתיבה ב-Cloud Storage |
| Pub/Sub | קריאה מ-Pub/Sub | כתיבה ל-Pub/Sub |
מחברי קלט/פלט שנתמכים על ידי Google
בטבלה הבאה מפורטים מחברי ה-I/O של Apache Beam שנתמכים על ידי Dataflow. רשימה מלאה של מחברי קלט/פלט של Apache Beam, כולל אלה שפותחו על ידי קהילת Apache Beam ונתמכים על ידי רצים אחרים, זמינה במאמר מחברי קלט/פלט במסמכי Apache Beam.
| שם מחבר קלט/פלט | Java | Python | Go |
|---|---|---|---|
| AvroIO | נתמך | נתמך | נתמך |
| BigQueryIO | נתמך | נתמך | נתמך |
| BigTableIO | נתמך | נתמך כיור | נתמך כיור |
| DatastoreIO | נתמך | נתמך | נתמך |
| FhirIO (healthcare) | נתמך | לא זמין | נתמך |
| FileIO | נתמך | נתמך | נתמך |
| GcsFileSystem | נתמך | נתמך | נתמך |
| JdbcIO | נתמך | תמיכה בשפות שונות | תמיכה בשפות שונות |
| KafkaIO | נתמך | תמיכה בשפות שונות | תמיכה בשפות שונות |
| LocalFileSystem | נתמך | נתמך | נתמך |
| ParquetIO | נתמך | נתמך | נתמך |
| PubSubIO | נתמך | נתמך | נתמך |
| SpannerIO | נתמך | תמיכה בשפות שונות | נתמך |
| TextIO | נתמך | נתמך | נתמך |
| TFRecordIO | נתמך | נתמך | לא זמין |
המאמרים הבאים
- מידע נוסף זמין בתיעוד של Apache Beam בנושא מחברי קלט/פלט.
- מאפייני הביצועים של צינורות Pub/Sub ל-BigQuery