סנכרון של מערכי נתונים אונליין ואופליין באמצעות BigQuery DataFrames

באמצעות Bigtable עם BigQuery, אפשר ליצור מסד נתונים של ניתוח בזמן אמת ולהשתמש בו בצינורות של למידת מכונה (ML). כך תוכלו לשמור על סנכרון הנתונים, לתמוך במניפולציה של נתונים ובפיתוח מודלים (גישה אופליין) ובשירות אפליקציות עם זמן אחזור נמוך (גישה אונליין).

כדי ליצור מסד נתונים לניתוח בזמן אמת, אפשר להשתמש ב-BigQuery DataFrames, שהם קבוצה של ספריות Python בקוד פתוח לעיבוד נתונים ב-BigQuery. באמצעות BigQuery DataFrames אפשר לפתח ולאמן מודלים ב-BigQuery, ולשכפל אוטומטית עותק של ערכי הנתונים האחרונים שמשמשים למודלים של למידת מכונה ב-Bigtable לצורך הצגה אונליין.

במאמר הזה מוסבר איך להשתמש ב-bigframes.streaming API כדי ליצור משימות BigQuery שמשכפלות ומסנכרנות באופן אוטומטי מערכי נתונים ב-BigQuery וב-Bigtable. לפני שתקראו את המסמך הזה, חשוב שתבינו את המסמכים הבאים:

BigQuery DataFrames

בעזרת BigQuery DataFrames אפשר לפתח ולאמן מודלים ב-BigQuery, ולשכפל באופן אוטומטי עותק של ערכי הנתונים העדכניים ביותר שמשמשים למודלים של למידת מכונה ב-Bigtable לצורך הצגה אונליין. היא מאפשרת לכם:

  • פיתוח טרנספורמציות של נתונים בממשק שתואם ל-Pandas‏ (bigframes.pandas) ישירות מול נתונים ב-BigQuery
  • אימון מודלים באמצעות API שדומה ל-scikit-learn ‏ (bigframes.ML)
  • סנכרון הנתונים שנדרשים להסקת מסקנות עם זמן אחזור נמוך באמצעות Bigtable ‏ (bigframes.streaming) כדי לתמוך באפליקציות שפונות למשתמשים

BigFrames StreamingDataFrame

bigframes.streaming.StreamingDataFrame הוא סוג של DataFrame בחבילת BigQuery DataFrames. הוא מאפשר ליצור אובייקט StreamingDataFrame שאפשר להשתמש בו כדי ליצור משימה שפועלת ברציפות ומזרימה נתונים מטבלת BigQuery ייעודית אל Bigtable לצורך הצגה באינטרנט. הפעולה הזו מתבצעת על ידי יצירה של שאילתות רציפות ב-BigQuery.

BigFrames StreamingDataFrame יכול לבצע את הפעולות הבאות:

  • יצירת StreamingDataFrame מטבלה ייעודית ב-BigQuery
  • אופציונלי: מבצעים פעולות נוספות של Pandas כמו בחירה, סינון ותצוגה מקדימה של התוכן.
  • יצירה וניהול של משימות סטרימינג ל-Bigtable

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות לשימוש ב-BigQuery DataFrames במחברת BigQuery, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

כדי לקבל את ההרשאות שדרושות לכתיבת נתונים לטבלת Bigtable, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

קדימה, מתחילים

‫BigQuery DataFrames היא חבילה בקוד פתוח. כדי להתקין את הגרסה העדכנית, מריצים את הפקודה pip install --upgrade bigframes.

כדי ליצור את BigFrames StreamingDataFrame הראשון ולסנכרן נתונים בין BigQuery ל-Bigtable, מריצים את קטע הקוד הבא. דוגמת הקוד המלאה זמינה במחברת GitHub‏ BigFrames StreamingDataFrame.

  import bigframes.streaming as bst

  bigframes.options._bigquery_options.project = "PROJECT"

  sdf = bst.read_gbq_table("birds.penguins_bigtable_streaming")

  job = sdf.to_bigtable(instance="BIGTABLE_INSTANCE",

    table="TABLE",

    app_profile=None,

    truncate=True,

    overwrite=True,`

    auto_create_column_families=True,

    bigtable_options={},

    job_id=None,

    job_id_prefix= "test_streaming_",)

  print(job.running())

  print(job.error_result)

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT: מזהה הפרויקט ב- Google Cloud
  • BIGTABLE_INSTANCE: המזהה של מופע Bigtable שמכיל את הטבלה שכותבים אליה
  • TABLE: המזהה של טבלת Bigtable שכותבים אליה

אחרי שהמשימה מאותחלת, היא פועלת כשאילתה רציפה ב-BigQuery ומעבירה בסטרימינג את כל שינויי הנתונים אל Bigtable.

עלויות

אין חיובים נוספים על שימוש ב-BigQuery BigFrames API, אבל יש חיובים על המשאבים הבסיסיים שמשמשים לשאילתות רציפות, ל-Bigtable ול-BigQuery.

שאילתות רציפות משתמשות בתמחור של יכולת החישוב של BigQuery, שנמדדת ביחידות קיבולת (Slot). כדי להריץ שאילתות מתמשכות, צריך מקום שמור שמשתמש במהדורת Enterprise או Enterprise Plus והקצאת מקום שמור שמשתמשת בסוג העבודה CONTINUOUS.

השימוש במשאבים אחרים של BigQuery, כמו הטמעה ואחסון של נתונים, מחויב לפי התעריפים שמופיעים בתמחור של BigQuery.

השימוש בשירותי Bigtable שמקבלים תוצאות של שאילתות מתמשכות מחויב לפי התעריפים של תמחור Bigtable.

מגבלות

כל המגבלות שקשורות לתכונות ולמיקום שחלות על שאילתות רציפות חלות גם על מסגרות נתונים של סטרימינג.

המאמרים הבאים