התחברות ל-Databricks

אדמינים ב-BigQuery יכולים ליצור חיבור לקריאה ולכתיבה של נתונים מDatabricks notebook. השלבים מתוארים באמצעות מסוףGoogle Cloud וסביבות העבודה של Databricks. אפשר גם לבצע את השלבים האלה באמצעות כלי שורת הפקודה gcloud ו-databricks, אבל ההנחיות האלה לא נכללות במדריך הזה.

‫Databricks ב- Google Cloud היא סביבת Databricks שמתארחת ב- Google Cloud, פועלת ב-Google Kubernetes Engine ‏(GKE) ומספקת שילוב מובנה עם BigQuery וטכנולוגיות אחרות של Google Cloud . אם אתם משתמשים חדשים ב-Databricks, כדאי לצפות בסרטון Introduction to Databricks Unified Data Platform כדי לקבל סקירה כללית על פלטפורמת Databricks Lakehouse.

מטרות

  • מגדירים את Google Cloud כדי להתחבר ל-Databricks.
  • פריסת Databricks ב- Google Cloud.
  • שליחת שאילתות ל-BigQuery מ-Databricks.

עלויות

במדריך הזה משתמשים ברכיבים של מסוף Google Cloud , כולל BigQuery ו-GKE, והשימוש בהם כרוך בתשלום. התמחור של BigQuery והתמחור של GKE חלים. בקטע Set up your account and create a workspace במסמכי התיעוד של Databricks מוסבר על העלויות שמשויכות לחשבון Databricks שפועל ב- Google Cloud.

לפני שמתחילים

לפני שמקשרים את Databricks ל-BigQuery, צריך לבצע את השלבים הבאים:

  1. מפעילים את BigQuery Storage API.
  2. יוצרים חשבון שירות ל-Databricks.
  3. יוצרים קטגוריה של Cloud Storage לאחסון זמני.

הפעלת BigQuery Storage API

‫BigQuery Storage API מופעל כברירת מחדל בכל פרויקט חדש שמשתמשים בו ב-BigQuery. אם ה-API לא מופעל בפרויקטים קיימים, פועלים לפי ההוראות הבאות:

  1. במסוף Google Cloud , נכנסים לדף BigQuery Storage API.

    כניסה ל-BigQuery Storage API

  2. מוודאים ש-BigQuery Storage API מופעל.

    ‫BigQuery Storage API מופעל

יצירת חשבון שירות ל-Databricks

בשלב הבא, יוצרים חשבון שירות לניהול זהויות והרשאות גישה (IAM) כדי לאפשר לאשכול Databricks להריץ שאילתות ב-BigQuery. מומלץ לתת לחשבון השירות הזה את ההרשאות המינימליות שנדרשות לביצוע המשימות שלו. תפקידים והרשאות ב-BigQuery

  1. נכנסים לדף Service Accounts במסוף Google Cloud .

    לדף Service accounts

  2. לוחצים על Create service account, נותנים לחשבון השירות את השם databricks-bigquery, מזינים תיאור קצר כמו Databricks tutorial service account ולוחצים על Create and continue.

  3. בקטע Grant this service account access to project, מציינים את התפקידים של חשבון השירות. כדי לתת לחשבון השירות הרשאה לקרוא נתונים מסביבת העבודה ב-Databricks ומהטבלה ב-BigQuery באותו פרויקט, בלי להפנות לתצוגה מהותית, צריך להקצות את התפקידים הבאים:

    • BigQuery Read Session User
    • BigQuery Data Viewer

    כדי לתת הרשאה לכתיבת נתונים, צריך להקצות את התפקידים הבאים:

    • שימוש במשימות BigQuery
    • עריכה של נתוני BigQuery
  4. רושמים את כתובת האימייל של חשבון השירות החדש כדי להשתמש בה בשלבים הבאים.

  5. לוחצים על סיום.

יצירת קטגוריה של Cloud Storage

כדי לכתוב ל-BigQuery, לאשכול Databricks צריכה להיות גישה לקטגוריה של Cloud Storage כדי לאחסן במאגר נתונים זמני את הנתונים שנכתבו.

  1. במסוף Google Cloud , נכנסים לדף Cloud Storage Browser.

    כניסה לדף Storage Browser

  2. לוחצים על Create bucket כדי לפתוח את תיבת הדו-שיח Create a bucket.

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

    תיבת הדו-שיח Name your bucket עם databricks-bq-123

  4. במדריך הזה משתמשים בהגדרות ברירת המחדל של מיקום האחסון, סוג האחסון, בקרת הגישה וההגדרות המתקדמות.

  5. לוחצים על Create כדי ליצור את הקטגוריה של Cloud Storage.

  6. לוחצים על Permissions, ואז על Add ומציינים את כתובת האימייל של חשבון השירות שיצרתם לגישה ל-Databricks בדף Service Accounts.

    תמונה

  7. לוחצים על Select a role ומוסיפים את התפקיד Storage admin.

  8. לוחצים על Save.

פריסת Databricks ב- Google Cloud

כדי להתכונן לפריסת Databricks ב- Google Cloud, מבצעים את השלבים הבאים:

  1. כדי להגדיר את חשבון Databricks, פועלים לפי ההוראות במאמר Set up your Databricks on Google Cloudaccount במסמכי התיעוד של Databricks.
  2. אחרי ההרשמה, תוכלו לקרוא מידע נוסף על ניהול חשבון Databricks.

יצירת סביבת עבודה, אשכול ו-notebook ב-Databricks

בשלבים הבאים מוסבר איך ליצור סביבת עבודה ב-Databricks, אשכול ו-notebook ב-Python כדי לכתוב קוד לגישה ל-BigQuery.

  1. מוודאים שמתקיימות הדרישות המוקדמות של Databricks.

  2. יוצרים את סביבת העבודה הראשונה. במסוף החשבון ב-Databricks, לוחצים על Create Workspace.

  3. מציינים את הערך gcp-bq בשדה Workspace name ובוחרים את האזור (Region).

    מסך ליצירת סביבת עבודה עם שם סביבת העבודה, האזור ומזהה הפרויקט ב- Google Cloud

  4. כדי למצוא את מזהה הפרויקט ב- Google Cloud , נכנסים למסוף Google Cloud ומעתיקים את הערך לשדה Google Cloud project ID.

    כניסה למסוף Google Cloud

  5. לוחצים על Save כדי ליצור את סביבת העבודה ב-Databricks.

  6. כדי ליצור אשכול Databricks עם Databricks runtime בגרסה 7.6 ואילך, בסרגל התפריטים שמימין בוחרים באפשרות Clusters, ואז לוחצים על Create Cluster בחלק העליון.

  7. מציינים את שם האשכול ואת הגודל שלו, לוחצים על Advanced Options ומציינים את כתובת האימייל של חשבון השירות ב- Google Cloud.

    משטח חדש של אשכול עם פרטים של חשבון שירות ב-Google

  8. לוחצים על Create Cluster.

  9. כדי ליצור Notebook ב-Python ל-Databricks, פועלים לפי ההוראות במאמר יצירת Notebook.

שליחת שאילתות ל-BigQuery מ-Databricks

בעזרת ההגדרות שלמעלה, אתם יכולים לחבר באופן מאובטח את Databricks ל-BigQuery. כדי לגשת ל-BigQuery, ב-Databricks משתמשים ב-fork של מתאם Google Apache Spark בקוד פתוח.

כדי לצמצם את העברת הנתונים ולהאיץ את השאילתות, Databricks דוחף באופן אוטומטי פרדיקטים מסוימים של שאילתות, למשל סינון בעמודות בתצוגת עץ ל-BigQuery. בנוסף, היכולת להריץ קודם שאילתת SQL ב-BigQuery באמצעות ה-API של query() מקטינה את גודל ההעברה של מערך הנתונים שנוצר.

בשלבים הבאים מוסבר איך לגשת למערך נתונים ב-BigQuery ולכתוב נתונים משלכם ב-BigQuery.

גישה למערך נתונים ציבורי ב-BigQuery

ב-BigQuery יש רשימה של מערכי נתונים ציבוריים זמינים. כדי להריץ שאילתה על מערך הנתונים הציבורי Shakespeare ב-BigQuery:

  1. כדי לקרוא את הטבלה ב-BigQuery, משתמשים בקטע הקוד הבא ב-Databricks notebook.

    table = "bigquery-public-data.samples.shakespeare"
    df = spark.read.format("bigquery").option("table",table).load()
    df.createOrReplaceTempView("shakespeare")
    

    מריצים את הקוד באמצעות לחיצה על Shift+Return.

    עכשיו אפשר לשלוח שאילתות לטבלה ב-BigQuery באמצעות DataFrame של Apache Spark‏ (df). לדוגמה, כדי להציג את שלוש השורות הראשונות של ה-DataFrame, משתמשים בקוד הבא:

    df.show(3)
    

    כדי לשלוח שאילתה לטבלה אחרת, מעדכנים את המשתנה table.

  2. אחת התכונות העיקריות של מסמכי Databricks היא שאפשר לשלב תאים בשפות שונות, כמו Scala,‏ Python ו-SQL, באותו מסמך.

    שאילתת ה-SQL הבאה מאפשרת להציג באופן חזותי את ספירת המילים ב-Shakespeare, אחרי שמריצים את התא הקודם שיוצר את התצוגה הזמנית.

    %sql
    SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word ORDER BY word_count DESC LIMIT 12
    
    

    תרשים עמודות של ספירת מילים במחזות של שייקספיר

    התא מריץ שאילתת Apache Spark SQL על מסגרת הנתונים באשכול Databricks, ולא ב-BigQuery. היתרון בגישה הזו הוא שניתוח הנתונים מתבצע ברמת Apache Spark, לא מתבצעות קריאות נוספות ל-BigQuery API ואין עלויות נוספות ב-BigQuery.

  3. לחלופין, אתם יכולים להקצות את הביצוע של שאילתת SQL ל-BigQuery באמצעות ה-API של query(), ולבצע אופטימיזציה כדי להקטין את גודל ההעברה של מסגרת הנתונים שנוצרה. בניגוד לדוגמה הקודמת, שבה העיבוד בוצע ב-Apache Spark, אם משתמשים בגישה הזו, התמחור והאופטימיזציה של השאילתות חלים על ביצוע השאילתה ב-BigQuery.

    בדוגמה הבאה נעשה שימוש ב-Scala, ב-API של query() ובקבוצת הנתונים הציבורית של שייקספיר ב-BigQuery, כדי לחשב את חמש המילים הנפוצות ביותר ביצירות של שייקספיר. לפני שמריצים את הקוד, צריך ליצור ב-BigQuery קבוצת נתונים ריקה בשם mdataset, שהקוד יוכל להפנות אליה. מידע נוסף זמין במאמר כתיבת נתונים ב-BigQuery.

    %scala
    // public dataset
    val table = "bigquery-public-data.samples.shakespeare"
    
    // existing dataset where the Google Cloud user has table creation permission
    val tempLocation = "mdataset"
    // query string
    val q = s"""SELECT word, SUM(word_count) AS word_count FROM ${table}
        GROUP BY word ORDER BY word_count DESC LIMIT 10 """
    
    // read the result of a GoogleSQL query into a DataFrame
    val df2 =
      spark.read.format("bigquery")
      .option("query", q)
      .option("materializationDataset", tempLocation)
      .load()
    
    // show the top 5 common words in Shakespeare
    df2.show(5)
    

    דוגמאות קוד נוספות מופיעות במחברת לדוגמה של Databricks BigQuery.

כתיבת נתונים ב-BigQuery

טבלאות ב-BigQuery קיימות במערכי נתונים. כדי לכתוב נתונים בטבלה ב-BigQuery, צריך ליצור קבוצת נתונים חדשה ב-BigQuery. כדי ליצור מערך נתונים ל-Databricks Python notebook, מבצעים את השלבים הבאים:

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. מרחיבים את האפשרות Actions, לוחצים על Create dataset ונותנים לה את השם together.

  3. ב-notebook של Databricks Python, יוצרים מסגרת נתונים של Apache Spark מרשימת Python עם שלושה ערכי מחרוזת באמצעות קטע הקוד הבא:

    from pyspark.sql.types import StringType
    mylist = ["Google", "Databricks", "better together"]
    
    df = spark.createDataFrame(mylist, StringType())
    
  4. מוסיפים עוד תא ל-notebook שכותב את מסגרת הנתונים של Apache Spark מהשלב הקודם לטבלה myTable ב-BigQuery במערך הנתונים together. הטבלה נוצרת או מוחלפת. משתמשים בשם הקטגוריה שציינתם קודם.

    bucket = YOUR_BUCKET_NAME
    table = "together.myTable"
    
    df.write
      .format("bigquery")
      .option("temporaryGcsBucket", bucket)
      .option("table", table)
      .mode("overwrite").save()
    
  5. כדי לוודא שהנתונים נכתבו בהצלחה, שולחים שאילתה ומציגים את הטבלה ב-BigQuery באמצעות DataFrame של Apache Spark‏ (df):

    display(spark.read.format("bigquery").option("table", table).load)
    

הסרת המשאבים

לפני שמסירים את Databricks, תמיד צריך לגבות את הנתונים ואת ה-notebooks. כדי לנקות ולהסיר לחלוטין את Databricks, מבטלים את המינוי ל-Databricks במסוףGoogle Cloud ומסירים את כל המשאבים הקשורים שיצרתם ממסוףGoogle Cloud .

אם מוחקים סביבת עבודה של Databricks, יכול להיות ששתי הקטגוריות של Cloud Storage שנקראות databricks-WORKSPACE_ID ו-databricks-WORKSPACE_ID-system ונוצרו על ידי Databricks לא יימחקו אם הן לא ריקות. אחרי מחיקת סביבת העבודה, אתם יכולים למחוק את האובייקטים האלה באופן ידני במסוףGoogle Cloud של הפרויקט.

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

בקטע הזה מופיעה רשימה של מסמכים ומדריכים נוספים: