sparklyr verwenden

sparklyr ist eine R-Schnittstelle zu Apache Spark. Sie stellt einen Mechanismus für die Interaktion mit Spark mithilfe vertrauter R-Schnittstellen bereit. Sie können sparklyr über Spark-Batchauftragsdefinitionen oder mit interaktiven Microsoft Fabric-Notebooks verwenden.

Wichtig

Microsoft Fabric befindet sich derzeit in der Vorschauversion. Diese Informationen beziehen sich auf eine Vorabversion des Produkts, an der vor der Veröffentlichung noch wesentliche Änderungen vorgenommen werden können. Microsoft übernimmt keine Garantie, weder ausdrücklich noch stillschweigend, für die hier bereitgestellten Informationen.

sparklyr wird zusammen mit anderen Ordnungspaketen wie dplyr verwendet. Microsoft Fabric verteilt die neueste stabile Version von sparklyr und tidyverse mit jeder Laufzeitversion. Sie können sie importieren und die API verwenden.

Voraussetzungen

  • Ein Power BI Premium-Abonnement. Wenn Sie noch keines haben, finden Sie weitere Informationen unter So erwerben Sie Power BI Premium.

  • Ein Power BI-Arbeitsbereich mit zugewiesener Premium-Kapazität. Wenn Sie keinen Arbeitsbereich haben, führen Sie die Schritte unter Erstellen eines Arbeitsbereichs aus, um einen Arbeitsbereich zu erstellen und ihn einer Premium-Kapazität zuzuweisen.

  • Melden Sie sich bei Microsoft Fabric an.

  • Öffnen oder erstellen Sie ein Notebook. Weitere Informationen finden Sie unter Verwenden von Microsoft Fabric-Notebooks.

  • Ändern Sie die primäre Sprache, indem Sie die Sprachoption auf SparkR (R) festlegen.

  • Schließen Sie Ihr Notebook an ein Lakehouse an. Wählen Sie auf der linken Seite Hinzufügen aus, um ein vorhandenes Lakehouse hinzuzufügen oder ein Lakehouse zu erstellen.

Herstellen einer Verbindung zwischen Sparklyr und Synapse Spark-Cluster

Verwenden Sie die folgende Verbindungsmethode in spark_connect() , um eine sparklyr Verbindung herzustellen.

# connect sparklyr to your spark cluster
spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)

Verwenden von Sparklyr zum Lesen von Daten

Eine neue Spark-Sitzung enthält keine Daten. Der erste Schritt besteht darin, entweder Daten in den Arbeitsspeicher Ihrer Spark-Sitzung zu laden oder Spark auf den Speicherort der Daten zu verweisen, damit es bei Bedarf auf die Daten zugreifen kann.

# load the sparklyr package
library(sparklyr)

# copy data from R environment to the Spark session's memory
mtcars_tbl <- copy_to(sc, mtcars, "spark_mtcars", overwrite = TRUE)

head(mtcars_tbl)

Mit sparklyrkönnen Sie auch write Daten read aus einer Lakehouse-Datei mithilfe des ABFS-Pfads verwenden. Um ein Lakehouse zu lesen und zu schreiben, fügen Sie es zuerst Ihrer Sitzung hinzu. Wählen Sie links im Notebook Hinzufügen aus, um ein vorhandenes Lakehouse hinzuzufügen oder ein Lakehouse zu erstellen.

Um Ihren ABFS-Pfad zu finden, klicken Sie mit der rechten Maustaste auf den Ordner Dateien in Ihrem Lakehouse, und wählen Sie dann ABFS-Pfad kopieren aus. Fügen Sie den pfad ein, der in diesem Code ersetzt abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files werden soll:

temp_csv = "abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files/data/mtcars.csv"

# write the table to your lakehouse using the ABFS path
spark_write_csv(mtcars_tbl, temp_csv, header = TRUE, mode = 'overwrite')

# read the data as CSV from lakehouse using the ABFS path
mtcarsDF <- spark_read_csv(sc, temp_csv) 
head(mtcarsDF)

Verwenden von Sparklyr zum Bearbeiten von Daten

sparklyr stellt mehrere Methoden zum Verarbeiten von Daten in Spark bereit:

  • dplyr-Befehle
  • SparkSQL
  • Featuretransformatoren von Spark

Verwenden Sie dplyr

Sie können vertraute dplyr Befehle verwenden, um Daten in Spark vorzubereiten. Die Befehle werden in Spark ausgeführt, sodass es keine unnötigen Datenübertragungen zwischen R und Spark gibt.

Klicken Sie auf die Option Bearbeiten von Daten mit dplyr , um zusätzliche Dokumentation zur Verwendung von dplyr mit Spark anzuzeigen.

# count cars by the number of cylinders the engine contains (cyl), order the results descendingly
library(dplyr)

cargroup <- group_by(mtcars_tbl, cyl) %>%
  count() %>%
  arrange(desc(n))

cargroup

sparklyr und dplyr übersetzen Sie die R-Befehle für uns in Spark SQL. Verwenden Sie show_query()zum Anzeigen der resultierenden Abfrage folgendes:

# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)

Verwenden von SQL

Es ist auch möglich, SQL-Abfragen direkt für Tabellen innerhalb eines Spark-Clusters auszuführen. Das spark_connection() -Objekt implementiert eine DBI-Schnittstelle für Spark, sodass Sie SQL ausführen und das Ergebnis als R-Datenrahmen zurückgeben können dbGetQuery() :

library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")

Verwenden von Featuretransformatoren

Beide vorherigen Methoden basieren auf SQL-Anweisungen. Spark stellt Befehle bereit, die eine Datentransformation bequemer machen, und zwar ohne die Verwendung von SQL.

Der Befehl vereinfacht beispielsweise die Erstellung einer neuen Spalte, ft_binarizer() die angibt, ob der Wert einer anderen Spalte über einem bestimmten Schwellenwert liegt.

Die vollständige Liste der Spark-Featuretransformatoren sparklyr finden Sie unter Referenz -FT.

mtcars_tbl %>% 
  ft_binarizer("mpg", "over_20", threshold = 20) %>% 
  select(mpg, over_20) %>% 
  head(5)

Machine Learning

Hier sehen Sie ein Beispiel, in dem wir ml_linear_regression() verwenden, um ein lineares Regressionsmodell anzupassen. Wir verwenden das integrierte mtcars Dataset und prüfen, ob wir den Kraftstoffverbrauch eines Autos (mpg) basierend auf seinem Gewicht (wt) und der Anzahl der Zylinder, die der Motor enthält (cyl) vorhersagen können. Wir gehen jeweils davon aus, dass die Beziehung zwischen mpg und jedem unserer Features linear ist.

Generieren von Test- und Trainingsdatensätzen

Verwenden Sie eine einfache Aufteilung, 70 % für das Training und 30 % für das Testen des Modells. Das Spielen mit diesem Verhältnis kann zu unterschiedlichen Modellen führen.

# split the dataframe into test and training dataframes

partitions <- mtcars_tbl %>%
  select(mpg, wt, cyl) %>% 
  sdf_random_split(training = 0.7, test = 0.3, seed = 2023)

Trainieren des Modells

Trainieren Sie das Logistische Regressionsmodell.

fit <- partitions$training %>%
  ml_linear_regression(mpg ~ .)

fit

Verwenden Sie summary() nun, um etwas mehr über die Qualität unseres Modells und die statistische Signifikanz jedes unserer Prädiktoren zu erfahren.

summary(fit)

Verwenden des Modells

Sie können das Modell auf das Testdataset anwenden, indem Sie aufrufen ml_predict().

pred <- ml_predict(fit, partitions$test)

head(pred)

Eine Liste der über Sparklyr verfügbaren Spark ML-Modelle finden Sie unter Referenz – ML.

Trennen des Spark-Clusters

Sie können spark_disconnect() die Schaltfläche Sitzung beenden oben im Notebook-Menüband aufrufen oder auswählen, um Ihre Spark-Sitzung zu beenden.

spark_disconnect(sc)

Nächste Schritte

Weitere Informationen zu den R-Funktionen: