המחשה ויזואלית של Spark DataFrames בתיקיות Notebook

אתם יכולים לעיין באופן אינטראקטיבי ב-PySpark DataFrames ב-Jupyter Notebooks, כולל Google Cloud Data Agent Kit‏ (DAK), באמצעות חבילת Python של google-colabsqlviz עם Managed Service for Apache Spark. ‫google-colabsqlviz מבוסס על anywidget ומופעל על ידי מנוע התרשימים של Data Studio. הוא יוצר תצוגה חזותית אינטראקטיבית בתוך הפלט של תא ה-notebook, בלי קוד שרטוט.

כשמעבירים DataFrame אל google-colabsqlviz, אפשר לעבור בין תצוגות של תרשימים וטבלאות נתונים, להגדיר מאפיינים ומדדים, להחיל צבירות, למיין או לסנן נתונים באופן אינטראקטיבי ולייצא נתוני תרשימים מסוננים או נצברים ל-DataFrame חדש:

  • תמיכה ב-DataFrame עם כמה מנועים: אפשר להציג אובייקטים של pyspark.sql.DataFrame (כולל Spark Connect DataFrames),‏ bigframes.pandas.DataFrame ו-pandas.DataFrame באמצעות API אחד.
  • הפעלה מבוזרת ובתוך הליבה: למרות שהווידג'ט טוען את ממשק המשתמש של תרשימי Data Studio מ-CDN של Google, הנתונים הבסיסיים לא נשלחים ל-Data Studio. כל הצבירות והמסננים פועלים בקרנל של Python או בסשן של Managed Service for Apache Spark, והתרשימים מוצגים באופן מקומי בלקוח של ה-Notebook.
  • אפס התנגשויות בסביבה: מנועים מבוזרים אופציונליים כמו pyspark ו-bigframes מזוהים בזמן הריצה, ולא משודרגים או מוחלפים כשמתקינים את google-colabsqlviz.

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

אפשר לרנדר מסגרות נתונים של PySpark ב-Spark Connect באמצעות google-colabsqlviz בסשנים אינטראקטיביים של Managed Service for Apache Spark עם גרסת זמן ריצה ללא שרת (serverless) 3.0 ואילך.

כדי ליצור Notebook ב-Visual Studio Code‏ (VS Code) באמצעות Data Agent Kit, או להשתמש בסביבת Notebook אחרת של Jupyter שנתמכת, כמו JupyterLab, פועלים לפי ההוראות הבאות:

  1. מגדירים את Data Agent Kit‏ (DAK):
    1. מתקינים את התוסף Data Agent Kit.
    2. מגדירים את Data Agent Kit.
    3. מוודאים שיש לכם את התפקידים הנדרשים בניהול זהויות והרשאות גישה (IAM).
  2. יוצרים תיקיית Notebook:
    1. בסרגל הפעילות של VS Code, לוחצים על Data Agent Kit, מרחיבים את Apache Spark ובוחרים באפשרות + New Spark Notebook.
    2. בקטע Select kernel type, לוחצים על Local Kernel.
    3. כדי לבחור תבנית של סביבת זמן ריצה בלי שרת (serverless), לוחצים על השם של אחת מתבניות סביבת זמן הריצה שברשימה.
    4. בסרגל הכלים של ה-notebook, לוחצים על Select Kernel, ואז על Python Environments...‎ ובוחרים את סביבת Python המקומית.
  3. כדי להתקין את חבילות Python הנדרשות של Spark Connect ו-google-colabsqlviz בסביבה המקומית, מריצים את הפקודה הבאה בתא של Notebook או בטרמינל מקומי:

    תא ב-Notebook

    %pip install -U 'google-cloud-spark-connect[interactive,client]'
    

    טרמינל מקומי

    pip install -U 'google-cloud-spark-connect[interactive,client]'
    

טעינה והצגה של מערך נתונים

אחרי שמתחילים ManagedSparkSession וטוענים קבוצת נתונים ל-pyspark.sql.DataFrame, מעבירים את ה-DataFrame לפונקציה explore_dataframe כדי לרנדר את ההמחשה האינטראקטיבית. בדוגמה הבאה מתחברים לסשן ללא שרת וטוענים את מערך הנתונים Palmer Penguins‏ (`lakehouse-public-data`.ml_datasets.penguins) ממערכי הנתונים הציבוריים של Lakehouse:

ב-
# Importing managed_spark_connect automatically imports explore_dataframe
from google.cloud.managed_spark_connect import ManagedSparkSession

spark = (
    ManagedSparkSession.builder.projectId("PROJECT_ID")
    .location("REGION")
    .getOrCreate()
)

df = spark.read.table("`lakehouse-public-data`.ml_datasets.penguins")

explore_dataframe(df)

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫REGION: האזור של Managed Service for Apache Spark לסשן (לדוגמה, us-central1).

כשמריצים את התא, google-colabsqlviz בודק את הסכימה של DataFrame ומציג ווידג'ט של תצוגה חזותית אינטראקטיבית באזור הפלט של התא עם תצוגה חזותית שמוגדרת כברירת מחדל – במערך הנתונים penguins, הוא מציג תרשים פיזור של הממוצע של flipper_length_mm ו-body_mass_g מקובצים לפי species.

בסרגל הכלים של הווידג'ט, לוחצים על Data כדי לבדוק את השורות של DataFrame בטבלה עם דפים. בוחרים באפשרות Split mode כדי להציג את התרשים ואת טבלת הנתונים הבסיסיים ביחד. לוחצים על תרשים כדי לחזור לתצוגת התרשים.

תצוגת ברירת המחדל של תרשים הפיזור בווידג'ט ההמחשה, שבה מוצגים האורך הממוצע של הסנפיר ומסת הגוף הממוצעת לפי מין הפינגווין.

עיון בתרשימים והתאמה אישית שלהם

אתם יכולים להתאים אישית את סוגי התרשימים, המאפיינים, המדדים, הצבירות, המיון והמסננים בממשק הווידג'ט, ולייצא את הנתונים שמתקבלים בחזרה ל-DataFrame ב-notebook.

  1. בחירת סוג תרשים: בחלונית הגדרות התצורה, לוחצים על תפריט סוג התרשים ובוחרים סוג תרשים, כמו תרשים עמודות אנכי. לרשימה המלאה של סוגי התרשימים הנתמכים, ראו סוגי תרשימים ב-Data Studio.
  2. הגדרת מאפיינים ומדדים: בכרטיסייה Setup, מגדירים את השדות של ה-DataFrame ב-penguins:
    • משאירים את הערך species בשדה Dimension כדי לקבץ רשומות לפי מיני פינגווינים.
    • בקטע Metric - Y axis, מגדירים את המדד ל-body_mass_g ואת הצבירה ל-AVG (Average) כדי לחשב את מסת הגוף הממוצעת בגרמים לכל מין.
    • לוחצים על Add dimension ובוחרים באפשרות island או sex כדי לפצל את התרשים לפי כמה מאפיינים, או משנים את צבירת המדדים מ-AVG ל-MAX או ל-SUM.
  3. מיון וסינון של התצוגה החזותית:
    • בכרטיסייה Setup, בקטע Sort, בוחרים את body_mass_g עם הצבירה AVG ובוחרים באפשרות Descending כדי לדרג את המינים לפי מסת הגוף הממוצעת הגבוהה ביותר.
    • לוחצים על Add filter בסרגל הכלים של הווידג'ט כדי לסנן רשומות לפי ערכי שדות (לדוגמה, body_mass_g גדול מ-4000 או שווה לו), או לוחצים על Create output dataframe בתחתית הווידג'ט כדי לייצא את נתוני התרשים המצטברים או את הנתונים המסוננים לתא DataFrame חדש. כשמעדכנים מאפיין או מסנן של תרשים, google-colabsqlviz מחשב מחדש את השאילתה ב-DataFrame ומעדכן את התצוגה החזותית:

תרשים עמודות אנכי וחלונית הגדרות בווידג'ט התצוגה החזותית, שבו מוצגת מסת הגוף הממוצעת לפי מיני פינגווינים, ממוינת בסדר יורד.

למידע נוסף על הגדרת מאפייני תרשימים, צבירות ופקדים אינטראקטיביים בממשק התרשימים המוטמע, קראו את המאמרים הבאים:

הגדרת הרצה של DataFrames גדולים

כשמעבירים pyspark.sql.DataFrame אל explore_dataframe(df), google-colabsqlviz בוחר בין שתי אסטרטגיות ביצוע על סמך הגודל של DataFrame:

  • התממשות בזיכרון (ברירת המחדל ל-DataFrame קטנים יותר): אם ה-DataFrame מוערך ב-256 MiB או פחות ומכיל לכל היותר 5,000,000 שורות, google-colabsqlviz אוסף את ה-DataFrame לזיכרון הליבה פעם אחת. שינויים נוספים בסוג התרשים, בצבירות, במיון ובסינון פועלים בזיכרון עם זמן אחזור מינימלי, ולא מפעילים משימות Spark חדשות.
  • דחיפה מבוזרת של Spark (ברירת המחדל ל-DataFrame גדולים יותר): אם ה-DataFrame חורג ממגבלת הבייטים או השורות, google-colabsqlviz שומר על ה-DataFrame כ-lazy ומתרגם כל שאילתה, סינון, מיון ובקשת חלוקה לדפים של תרשים לפעולת PySpark שמופעלת בסשן ללא שרת (serverless) של Managed Service for Apache Spark. הגישה הזו יכולה להוסיף זמן אחזור, אבל היא מאפשרת להציג מסגרות נתונים גדולות בהרבה.

כדי לשנות או להשבית את הסף של החומריות בזיכרון, מגדירים את משתנה הסביבה COLABSQLVIZ_PYSPARK_EAGER_MAX_BYTES לפני שקוראים ל-explore_dataframe(df):

import os

# Importing managed_spark_connect automatically imports explore_dataframe
from google.cloud.managed_spark_connect import ManagedSparkSession

# Set to "0" to disable upfront collection and push all chart queries to Spark,
# or set a custom byte limit, such as str(64 * 1024 * 1024) for 64 MiB.
os.environ["COLABSQLVIZ_PYSPARK_EAGER_MAX_BYTES"] = "0"

explore_dataframe(df)

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