الوسائل البصرية

يدعم Azure Databricks أنواعا مختلفة من المرئيات خارج منطقة الجزاء باستخدام display الدالتين و displayHTML .

يدعم Azure Databricks أيضا مكتبات التصور في Python و R ويسمح لك بتثبيت مكتبات الجهات الخارجية واستخدامها.

display دالة

displayتدعم الدالة عدة أنواع من البيانات والتصور.

في هذا القسم:

أنواع البيانات

DataFrames

أسهل طريقة لإنشاء تصور DataFrame في Azure Databricks هو استدعاء display(<dataframe-name>) . على سبيل المثال، إذا كان لديك Spark DataFrame diamonds_df لمجموعة بيانات الماس مجمعة حسب لون الماس، وحساب متوسط السعر، واستدعت:

from pyspark.sql.functions import avg
diamonds_df = spark.read.csv("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header="true", inferSchema="true")

display(diamonds_df.select("color","price").groupBy("color").agg(avg("price")))

يظهر جدول بلون الألماس مقابل متوسط السعر.

Diamond color versus average price

تلميح

إذا كنت ترى OK مع أي تقديم بعد استدعاء display الدالة، غالبا ما يكون DataFrame أو مجموعة مررت في فارغة.

display() يدعم display(). إذا قمت بالرجوع إلى DataFrame في الباندا أو Pandas API على Spark بدون ، يتم تقديم الجدول كما سيكون في دفتر ملاحظات Jupyter.

أسلوب إطار البيانات display

ملاحظة

متوفر في Databricks وقت التشغيل 7.1 وما فوق.

DataFrames في PySpark، الباندا، وPAPI الباندا على سبارك لديها طريقة تدعو وظيفة Databricks أزور. يمكنك تسميته بعد عملية DataFrame بسيطة، على سبيل المثال:

diamonds_df = spark.read.csv("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header="true", inferSchema="true")
diamonds_df.select("color","price").display()

أو في نهاية سلسلة من عمليات DataFrame المتسلسلة، على سبيل المثال:

from pyspark.sql.functions import avg
diamonds_df = spark.read.csv("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header="true", inferSchema="true")

diamonds_df.select("color","price").groupBy("color").agg(avg("price")).display()
ملفات تعريف البيانات

هام

هذه الميزة في المعاينة العامة.

ملاحظة

متوفر في Databricks وقت التشغيل 9.1 وما فوق.

بدءا من Databricks وقت التشغيل 9.1، عند استخدام display أسلوب DataFrame، تظهر علامتي تبويب في جزء النتائج: Table و Data Profile . Table يعرض النتائج بتنسيق جدولي ويمنحك حق الوصول إلى Tableالمضمنة. Data Profile يعرض إحصائيات موجزة ل Apache Spark أو pandas DataFrame بتنسيق جدولي ورسومي.

Data Profile

  • تظهر الميزات الرقمية والقاطعة في جداول منفصلة.
  • في أعلى علامة التبويب ، يمكنك فرز الميزات أو البحث عنها.
  • في أعلى عمود المخطط، يمكنك اختيار عرض رسم بياني(قياسي)أو كمي.
  • تحقق من توسيع لتكبير المخططات.
  • تحقق من السجل لعرض المخططات على مقياس سجل.
  • يمكنك تمرير المؤشر فوق المخططات للحصول على معلومات أكثر تفصيلا، مثل حدود عمود المدرج التكراري وعدد الصفوف فيه، أو القيمة الكمية.

ملاحظة

لمشاهدة ملفات تعريف البيانات، يجب استخدام بناء الجملة display(df) . بناء df.display() الجملة غير معتمد.

يمكنك أيضا إنشاء ملفات تعريف البيانات برمجيا; راجع الأمر تلخيص (dbutils.data.summarize).

الصور

display تقديم أعمدة تحتوي على أنواع بيانات الصور ك HTML منسق. display محاولات لتقديم الصور المصغرة DataFrame للأعمدة المطابقة ل Spark display. يعمل عرض الصور المصغرة لأي صور يتم قراءتها بنجاح من خلال spark.read.format('image') الوظيفة. بالنسبة لقيم الصور التي تم إنشاؤها من خلال وسائل أخرى، يدعم Azure Databricks عرض صور قناة واحدة أو 3 أو 4 (حيث تتكون كل قناة من بايت واحد)، مع القيود التالية:

  • صور القناة الواحدة: يجب أن يساوي الحقل 0. heightwidth، ويجب أن تصف nChannels الحقول بدقة بيانات الصورة الثنائية في data الحقل
  • صور ثلاثية القنوات: يجب أن يساوي الحقل 16. heightwidth، ويجب أن تصف nChannels الحقول بدقة بيانات الصورة الثنائية في data الحقل . dataيجب أن يحتوي الحقل على بيانات بكسل في قطع ثلاثة بايت، مع ترتيب القناة (blue, green, red) لكل بكسل.
  • صور من أربع قنوات: يجب أن يساوي الحقل 24. heightwidth، ويجب أن تصف nChannels الحقول بدقة بيانات الصورة الثنائية في data الحقل . dataيجب أن يحتوي الحقل على بيانات بكسل في قطع ذات أربعة بايت، مع ترتيب القناة (blue, green, red, alpha) لكل بكسل.
مثال

افترض أن لديك مجلد يحتوي على بعض الصور:

Folder of image data

إذا كنت تقرأ الصور في DataFrame مع ImageSchema.readImages وعرض ثم DataFrame ، display يعرض الصور المصغرة للصور :

from pyspark.ml.image import ImageSchema
image_df = ImageSchema.readImages(sample_img_dir)
display(image_df)

Display image DataFrame

إطارات بيانات التدفق المنظمة

لتصور نتيجة استعلام تدفق في الوقت الحقيقي يمكنك display هيكل تدفق DataFrame في سكالا وبيثون.

Python
streaming_df = spark.readStream.format("rate").load()
display(streaming_df.groupBy().count())
Scala
val streaming_df = spark.readStream.format("rate").load()
display(streaming_df.groupBy().count())

display يدعم المعلمات الاختيارية التالية:

  • streamNameاسم الاستعلام المتدفق:
  • trigger (Scala) و processingTime (Python): يحدد عدد مرات تشغيل استعلام البث. إذا لم يتم تحديد النظام يتحقق من توفر بيانات جديدة بمجرد اكتمال المعالجة السابقة. لتقليل التكلفة في الإنتاج، توصي Databricks بتعيين فاصل زمني للزناد دائما. مع Databricks وقت التشغيل 8.0 وما فوق، الفاصل الزمني المشغل الافتراضي هو 500 مللي ثانية.
  • checkpointLocationالموقع الذي يكتب فيه النظام كافة معلومات نقطة التفتيش. إذا لم يتم تحديده، يقوم النظام تلقائيا بإنشاء موقع نقطة تفتيش مؤقتة على DBFS. لكي يستمر الدفق في معالجة البيانات من حيث توقف، يجب توفير موقع نقطة تفتيش. توصي Databricks بأن تقوم دائما بتحديد الخيار في الإنتاج.
Python
streaming_df = spark.readStream.format("rate").load()
display(streaming_df.groupBy().count(), processingTime = "5 seconds", checkpointLocation = "dbfs:/<checkpoint-path>")
Scala
import org.apache.spark.sql.streaming.Trigger

val streaming_df = spark.readStream.format("rate").load()
display(streaming_df.groupBy().count(), trigger = Trigger.ProcessingTime("5 seconds"), checkpointLocation = "dbfs:/<checkpoint-path>")

لمزيد من المعلومات حول هذه المعلمات، راجع بدء تشغيل استعلامات الدفق.

أنواع المخططات

displayتدعم الدالة مجموعة غنية من أنواع المخططات:

Chart types

اختيار نوع تخطيط وتكوينه

لاختيار مخطط شريطي، انقر فوق رمز المخطط Chart Button الشريطي:

Bar chart icon

لاختيار نوع رسم آخر، انقر Button Down على يمين المخطط Chart Button الشريطي واختر نوع الرسم.

شريط أدوات المخطط

تحتوي كل من المخططات الخطية والشريطية على شريط أدوات مضمن يدعم مجموعة غنية من التفاعلات من جانب العميل.

Chart toolbar

لتكوين مخطط، انقر فوق خيارات الرسم....

Plot options

يحتوي المخطط الخطي على بعض خيارات التخطيط المخصص: إعداد نطاق محور ص، وإظهار نقاط وإخفاء، وعرض محور ص بمقياس سجل.

للحصول على معلومات حول أنواع المخططات القديمة، راجع:

تناسق الألوان عبر المخططات

يدعم Azure Databricks نوعين من تناسق الألوان عبر المخططات: مجموعة السلاسل والعالمية.

تعيين سلسلة تناسق اللون تعيين نفس اللون إلى نفس القيمة إذا كان لديك سلسلة مع نفس القيم ولكن في أوامر مختلفة (على سبيل المثال، A = و B = ["Orange", "Banana", "Apple"] ). يتم فرز القيم قبل الرسم، بحيث يتم فرز كل من وسيلتي الإيضاح بنفس الطريقة ( ["Apple", "Banana", "Orange"] ) ، ويتم إعطاء نفس القيم نفس الألوان. ومع ذلك، إذا كان لديك سلسلة C = ["Orange", "Banana"] ، فلن يكون لون متناسق مع مجموعة A لأن المجموعة ليست هي نفسها. خوارزمية الفرز تعيين اللون الأول إلى "الموز" في مجموعة C ولكن اللون الثاني إلى "الموز" في مجموعة A. إذا أردت أن تكون هذه السلسلة متناسقة مع الألوان، يمكنك تحديد أن المخططات يجب أن يكون لها تناسق ألوان عمومي.

في تناسق الألوان العمومية، يتم تعيين كل قيمة دائما إلى نفس اللون بغض النظر عن القيم التي تحتوي عليها السلسلة. لتمكين هذا لكل مخطط، حدد خانة الاختيار تناسق الألوان العمومية.

Global color consistency

ملاحظة

لتحقيق هذا التناسق، تجزئة Azure Databricks مباشرة من القيم إلى الألوان. لتجنب الاصطدامات (حيث تذهب قيمتان إلى نفس اللون بالضبط) ، فإن التجزئة هي لمجموعة كبيرة من الألوان ، والتي لها تأثير جانبي لا يمكن ضمان ألوان جميلة المظهر أو يمكن تمييزها بسهولة ؛ مع العديد من الألوان هناك لا بد أن يكون بعض التي هي مشابهة جدا يبحث.

تصورات التعلم الآلي

بالإضافة إلى أنواع المخططات القياسية، display تدعم الدالة تصورات معلمات التدريب الآلي التالية ونتائجها:

مخلفات

بالنسبة للتراجع الخطي واللوجستي، display يدعم تقديم مخطط تركيب مقابل display للحصول على هذا المخطط، يمكنك توفير طراز و DataFrame.

المثال التالي يدير انحدار خطي على سكان المدينة إلى بيانات سعر بيع المنزل ثم يعرض المخلفات مقابل البيانات المجهزة.

# Load data
pop_df = spark.read.csv("/databricks-datasets/samples/population-vs-price/data_geo.csv", header="true", inferSchema="true")

# Drop rows with missing values and rename the feature and label columns, replacing spaces with _
from pyspark.sql.functions import col
pop_df = pop_df.dropna() # drop rows with missing values
exprs = [col(column).alias(column.replace(' ', '_')) for column in pop_df.columns]

# Register a UDF to convert the feature (2014_Population_estimate) column vector to a VectorUDT type and apply it to the column.
from pyspark.ml.linalg import Vectors, VectorUDT

spark.udf.register("oneElementVec", lambda d: Vectors.dense([d]), returnType=VectorUDT())
tdata = pop_df.select(*exprs).selectExpr("oneElementVec(2014_Population_estimate) as features", "2015_median_sales_price as label")

# Run a linear regression
from pyspark.ml.regression import LinearRegression

lr = LinearRegression()
modelA = lr.fit(tdata, {lr.regParam:0.0})

# Plot residuals versus fitted data
display(modelA, tdata)

Display residuals

منحنيات ROC

بالنسبة للتراجع اللوجستي، display يدعم تقديم منحنى display للحصول على هذا المخطط، يمكنك توفير الطراز والبيانات الجاهزة التي يتم إدخالها إلى fit الأسلوب والمعلمة "ROC" .

المثال التالي يطور مصنف الذي يتنبأ إذا كان الفرد يكسب < = 50K أو > 50k سنويا من سمات مختلفة للفرد. مجموعة بيانات البالغين مستمدة من بيانات التعداد، وتتكون من معلومات عن 48842 فردا ودخلهم السنوي.

يستخدم التعليمات البرمجية المثال في هذا المقطع ترميز واحد الساخنة. تمت إعادة تسمية الدالة مع Apache Spark 3.0، لذا فإن التعليمات البرمجية مختلفة قليلا اعتمادا على إصدار Databricks Runtime الذي تستخدمه. إذا كنت تستخدم Databricks Runtime 6.x أو أقل، يجب عليك ضبط سطرين في التعليمات البرمجية كما هو موضح في تعليقات التعليمات البرمجية.


# This code uses one-hot encoding to convert all categorical variables into binary vectors.

schema = """`age` DOUBLE,
`workclass` STRING,
`fnlwgt` DOUBLE,
`education` STRING,
`education_num` DOUBLE,
`marital_status` STRING,
`occupation` STRING,
`relationship` STRING,
`race` STRING,
`sex` STRING,
`capital_gain` DOUBLE,
`capital_loss` DOUBLE,
`hours_per_week` DOUBLE,
`native_country` STRING,
`income` STRING"""

dataset = spark.read.csv("/databricks-datasets/adult/adult.data", schema=schema)

from pyspark.ml import Pipeline
from pyspark.ml.feature import OneHotEncoder, StringIndexer, VectorAssembler
# If you are using Databricks Runtime 6.x or below, comment out the preceding line and uncomment the following line.
# from pyspark.ml.feature import OneHotEncoderEstimator, StringIndexer, VectorAssembler
categoricalColumns = ["workclass", "education", "marital_status", "occupation", "relationship", "race", "sex", "native_country"]

stages = [] # stages in the Pipeline
for categoricalCol in categoricalColumns:
    # Category indexing with StringIndexer
    stringIndexer = StringIndexer(inputCol=categoricalCol, outputCol=categoricalCol + "Index")
    # Use OneHotEncoder to convert categorical variables into binary SparseVectors
    encoder = OneHotEncoder(inputCols=[stringIndexer.getOutputCol()], outputCols=[categoricalCol + "classVec"])
    # If you are using Databricks Runtime 6.x or below, comment out the preceding line and uncomment the following line.
    # encoder = OneHotEncoderEstimator(inputCols=[stringIndexer.getOutputCol()], outputCols=[categoricalCol + "classVec"])
    # Add stages.  These are not run here, but will run all at once later on.
    stages += [stringIndexer, encoder]

# Convert label into label indices using the StringIndexer
label_stringIdx = StringIndexer(inputCol="income", outputCol="label")
stages += [label_stringIdx]

# Transform all features into a vector using VectorAssembler
numericCols = ["age", "fnlwgt", "education_num", "capital_gain", "capital_loss", "hours_per_week"]
assemblerInputs = [c + "classVec" for c in categoricalColumns] + numericCols
assembler = VectorAssembler(inputCols=assemblerInputs, outputCol="features")
stages += [assembler]

# Run the stages as a Pipeline. This puts the data through all of the feature transformations in a single call.

partialPipeline = Pipeline().setStages(stages)
pipelineModel = partialPipeline.fit(dataset)
preppedDataDF = pipelineModel.transform(dataset)

# Fit logistic regression model

from pyspark.ml.classification import LogisticRegression
lrModel = LogisticRegression().fit(preppedDataDF)

# ROC for data
display(lrModel, preppedDataDF, "ROC")

Display ROC

لعرض المتبقية، حذف "ROC" المعلمة:

display(lrModel, preppedDataDF)

Display logistic regression residuals

أشجار القرار

displayتدعم الدالة تقديم شجرة قرار.

للحصول على هذا التصور، يمكنك توفير نموذج شجرة القرار.

الأمثلة التالية تدريب شجرة التعرف على الأرقام (0 -9) من مجموعة بيانات MNIST من الصور من الأرقام المكتوبة بخط اليد ومن ثم يعرض الشجرة.

Python
trainingDF = spark.read.format("libsvm").load("/databricks-datasets/mnist-digits/data-001/mnist-digits-train.txt").cache()
testDF = spark.read.format("libsvm").load("/databricks-datasets/mnist-digits/data-001/mnist-digits-test.txt").cache()

from pyspark.ml.classification import DecisionTreeClassifier
from pyspark.ml.feature import StringIndexer
from pyspark.ml import Pipeline

indexer = StringIndexer().setInputCol("label").setOutputCol("indexedLabel")

dtc = DecisionTreeClassifier().setLabelCol("indexedLabel")

# Chain indexer + dtc together into a single ML Pipeline.
pipeline = Pipeline().setStages([indexer, dtc])

model = pipeline.fit(trainingDF)
display(model.stages[-1])
Scala
val trainingDF = spark.read.format("libsvm").load("/databricks-datasets/mnist-digits/data-001/mnist-digits-train.txt").cache
val testDF = spark.read.format("libsvm").load("/databricks-datasets/mnist-digits/data-001/mnist-digits-test.txt").cache

import org.apache.spark.ml.classification.{DecisionTreeClassifier, DecisionTreeClassificationModel}
import org.apache.spark.ml.feature.StringIndexer
import org.apache.spark.ml.Pipeline

val indexer = new StringIndexer().setInputCol("label").setOutputCol("indexedLabel")
val dtc = new DecisionTreeClassifier().setLabelCol("indexedLabel")
val pipeline = new Pipeline().setStages(Array(indexer, dtc))

val model = pipeline.fit(trainingDF)
val tree = model.stages.last.asInstanceOf[DecisionTreeClassificationModel]

display(tree)

Display decision tree

displayHTML دالة

تدعم دفاتر ملاحظات لغة برمجة Azure Databricks (Python و R و Scala) رسومات HTML باستخدام displayHTML الدالة؛ يمكنك تمرير الوظيفة أي رمز HTML أو CSS أو JavaScript. تدعم هذه الوظيفة الرسومات التفاعلية باستخدام مكتبات JavaScript مثل D3.

للحصول على أمثلة لاستخدام displayHTML ، راجع:

ملاحظة

displayHTMLيتم تقديم iframe من المجال ، ويتضمن databricksusercontent.com مربع الحماية iframe allow-same-origin السمة. databricksusercontent.com يجب أن يكون الوصول إليها من المتصفح الخاص بك. إذا تم حظره حاليا من قبل شبكة الشركة الخاصة بك، يجب إضافته إلى قائمة السماح.

المرئيات حسب اللغة

في هذا القسم:

تصورات في بيثون

لرسم البيانات في Python، استخدم الدالة display كما يلي:

diamonds_df = spark.read.csv("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header="true", inferSchema="true")

display(diamonds_df.groupBy("color").avg("price").orderBy("color"))

Python bar chart

في هذا القسم:

عميق الغوص بيثون دفتر الملاحظات

للتعمق في تصورات Python باستخدام display ، راجع دفتر الملاحظات:

⁧⁩Seaborn⁧⁩

يمكنك أيضا استخدام مكتبات Python الأخرى لإنشاء قطع أرض. يتضمن وقت تشغيل Databricks مكتبة التصور المولودة في البحر. لإنشاء قطعة أرض تولد بحرا، قم باستيراد المكتبة، وإنشاء قطعة أرض، وتمرير المؤامرة إلى display الدالة.

import seaborn as sns
sns.set(style="white")

df = sns.load_dataset("iris")
g = sns.PairGrid(df, diag_sharey=False)
g.map_lower(sns.kdeplot)
g.map_diag(sns.kdeplot, lw=3)

g.map_upper(sns.regplot)

display(g.fig)

Seaborn plot

مكتبات بيثون أخرى

المرئيات في R

لرسم البيانات في R، استخدم display الدالة كما يلي:

library(SparkR)
diamonds_df <- read.df("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", source = "csv", header="true", inferSchema = "true")

display(arrange(agg(groupBy(diamonds_df, "color"), "price" = "avg"), "color"))

يمكنك استخدام دالة رسم R الافتراضية.

fit <- lm(Petal.Length ~., data = iris)
layout(matrix(c(1,2,3,4),2,2)) # optional 4 graphs/page
plot(fit)

R default plot

يمكنك أيضا استخدام أي حزمة مرئيات R. يلتقط دفتر ملاحظات R الرسم الناتج ك a .png ويعرضه مضمنا.

في هذا القسم:

شعريه

تدعم حزمة شعرية الرسوم البيانية trellis - الرسوم البيانية التي تعرض متغير أو العلاقة بين المتغيرات، مشروطة على واحد أو أكثر من المتغيرات الأخرى.

library(lattice)
xyplot(price ~ carat | cut, diamonds, scales = list(log = TRUE), type = c("p", "g", "smooth"), ylab = "Log price")

R Lattice plot

دانديفا

حزمة DandEFA يدعم مؤامرات الهندباء.

install.packages("DandEFA", repos = "https://cran.us.r-project.org")
library(DandEFA)
data(timss2011)
timss2011 <- na.omit(timss2011)
dandpal <- rev(rainbow(100, start = 0, end = 0.2))
facl <- factload(timss2011,nfac=5,method="prax",cormeth="spearman")
dandelion(facl,bound=0,mcex=c(1,1.2),palet=dandpal)
facl <- factload(timss2011,nfac=8,method="mle",cormeth="pearson")
dandelion(facl,bound=0,mcex=c(1,1.2),palet=dandpal)

R DandEFA plot

مؤامرة

حزمة R Plotly يعتمد على htmlwidgets ل R. للحصول على إرشادات التثبيت ودفتر ملاحظات، راجع htmlwidgets.

مكتبات R أخرى

مرئيات في سكالا

لرسم البيانات في Scala، استخدم display الدالة كما يلي:

val diamonds_df = spark.read.format("csv").option("header","true").option("inferSchema","true").load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv")

display(diamonds_df.groupBy("color").avg("price").orderBy("color"))

Scala bar chart

عميق الغوص سكالا دفتر الملاحظات

للتعمق في تصورات Scala باستخدام display ، راجع دفتر الملاحظات:

مرئيات في SQL

عند تشغيل استعلام SQL، يقوم Azure Databricks تلقائيا باستخراج بعض البيانات وعرضها كجدول.

SELECT color, avg(price) AS price FROM diamonds GROUP BY color ORDER BY COLOR

SQL table

من هناك يمكنك تحديد أنواع مختلفة من المخططات.

SQL bar chart

ملفات تعريف البيانات في SQL

هام

هذه الميزة في المعاينة العامة.

بدءا من Databricks وقت التشغيل 9.1، تظهر علامتي تبويب في جزء النتائج: Table و Data Profile . Table يعرض النتائج بتنسيق جدولي ويمنحك حق الوصول إلى أنواع المخططات المختلفة. Data Profile يعرض إحصائيات موجزة للجدول بتنسيق جدولي ورسومي. للحصول على عرض مثال وتفاصيل حول ملفات تعريف البيانات المعروضة، راجع ملفات تعريف البيانات.