Flink Bigtable connector
Apache Flink הוא פלטפורמת עיבוד נתונים בסטרימינג שמאפשרת לכם לבצע מניפולציות בנתונים בזמן אמת. אם יש לכם טבלה ב-Bigtable, אתם יכולים להשתמש במחבר Flink Bigtable כדי להזרים, לסדר ולכתוב נתונים ממקור הנתונים שציינתם אל Bigtable. המחבר מאפשר לכם לבצע את הפעולות הבאות באמצעות Apache Flink Table API או Datastream API:
- יצירת פייפליין
- ביצוע סריאליזציה של הערכים ממקור הנתונים לרשומות של מוטציות ב-Bigtable
- כתיבת הרשומות האלה לטבלת Bigtable
במסמך הזה מתואר המחבר Flink Bigtable ומוסבר מה צריך לדעת לפני שמשתמשים בו. לפני שקוראים את המסמך הזה, כדאי להכיר את Apache Flink, את מודל האחסון של Bigtable ואת פעולות הכתיבה ב-Bigtable.
כדי להשתמש במחבר, צריך שתהיה לכם טבלת Bigtable קיימת שתשמש כיעד לנתונים. צריך ליצור את משפחות העמודות של הטבלה לפני שמתחילים את צינור הנתונים. אי אפשר ליצור משפחות עמודות בזמן הכתיבה. מידע נוסף זמין במאמר בנושא יצירה וניהול של טבלאות.
המחבר תואם לגרסה 2.1.0 של Apache Flink וזמין ב-GitHub. מידע על התקנת המחבר זמין במאגר Flink Bigtable Connector. דוגמאות קוד שממחישות איך להשתמש ב-Connector זמינות בספרייה flink-examples-gcp-bigtable.
Serializers
למחבר Flink יש שלושה סריאליזטורים מובנים שאפשר להשתמש בהם כדי להמיר נתונים לרשומות מוטציה ב-Bigtable:
-
GenericRecordToRowMutationSerializer: לאובייקטים של AVROGenericRecord -
RowDataToRowMutationSerializer: לאובייקטים של FlinkRowData -
FunctionRowMutationSerializer: ללוגיקת סריאליזציה בהתאמה אישית באמצעות פונקציה שסופקה
אפשר גם ליצור סדרת נתונים משלכם בהתאמה אישית, שמועברת בירושה מ-BaseRowMutationSerializer.
מצבי סריאליזציה
כשמשתמשים ב-Flink Connector, בוחרים אחד משני מצבי סריאליזציה. הפרמטר mode מציין איך נתוני המקור עוברים סריאליזציה לרשומות של שינויים שנכתבות למשפחות עמודות בטבלת Bigtable. חובה להשתמש באחד מהמצבים.
מצב קבוצת עמודות
במצב של קבוצת עמודות, כל הנתונים נכתבים לקבוצת עמודות אחת שצוינה. אין תמיכה בשדות שהם רכיב בתוך רכיב.
מצב שורות בתוך שורות
במצב של שורות מקוננות, כל שדה ברמה העליונה מייצג משפחה של עמודות. הערך של השדה ברמה העליונה (RowKeyField) הוא שדה אחר. הערך של השדה הזה כולל אובייקט שורה לכל עמודה במשפחת העמודות של Bigtable. במצב של שורות מקוננות, כל השדות מלבד השדה ברמה העליונה צריכים להיות אובייקטים של שורות. אין תמיכה בשורות עם קינון כפול.
אפשרויות להגדרות אישיות
יש כמה אפשרויות להגדרת הביצועים וההתנהגות של המחבר. לקבלת מידע נוסף על האפשרויות האלה, עיינו במאמרי העזרה בנושא מחבר ב-GitHub.
עיבוד בדיוק פעם אחת
ב-Apache Flink, exactly once (פעם אחת בדיוק) פירושו שכל רשומה של נתונים בזרם מעובדת פעם אחת בדיוק, וכך נמנע עיבוד כפול או אובדן נתונים, גם במקרה של כשלים במערכת.
מוטציה ב-Bigtable היא אידמפוטנטית כברירת מחדל, ולכן בקשת כתיבה עם אותם מפתח שורה, משפחת עמודות, עמודה, חותמת זמן וערך לא יוצרת תא חדש, גם אם מתבצע ניסיון חוזר.mutateRow כשמשתמשים ב-Bigtable כמקור נתונים (data sink) למסגרת Apache Flink, מקבלים אוטומטית התנהגות של בדיוק פעם אחת (exactly-once), בתנאי שהתנאים הבאים מתקיימים:
- לא הגדרתם את חותמת הזמן לשימוש בחותמת הזמן בצד השרת (
-1) בניסיונות חוזרים. - שאר הצינור עומד בדרישות של 'פעם אחת בדיוק'.
מידע נוסף על סמנטיקה של בדיוק פעם אחת זמין במאמר סקירה כללית של עיבוד מקצה לקצה של בדיוק פעם אחת ב-Apache Flink.
המאמרים הבאים
- Bigtable Beam connector
- Bigtable Kafka Connect sink connector
- שילובים עם Bigtable
- הפניית Datastream API