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.
sparklyr
wird zusammen mit anderen tidyverse-Paketen wie z. B. dplyr verwendet. Microsoft Fabric verteilt die neuesten stabilen Versionen von sparklyr und tidyverse mit jedem Runtimerelease. Sie können sie importieren und die API verwenden.
Voraussetzungen
Erwerben Sie ein Microsoft Fabric-Abonnement. Registrieren Sie sich alternativ für eine kostenlose Microsoft Fabric-Testversion.
Melden Sie sich bei Microsoft Fabric an.
Wechseln Sie mithilfe des Umschalters für die Benutzeroberfläche auf der linken Seite Ihrer Startseite zur Synapse Data Science-Umgebung.
Öffnen oder erstellen Sie ein Notebook. Informationen dazu finden Sie unter Verwenden von Microsoft Fabric-Notebooks.
Legen Sie zum Ändern der primären Sprache die Sprachoption auf SparkR (R) fest.
Fügen 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.
Verbinden von sparklyr mit einem Synapse Spark-Cluster
Verwenden Sie die folgende Verbindungsmethode in spark_connect()
, um eine sparklyr
-Verbindung herzustellen. Wir unterstützen eine neue Verbindungsmethode namens synapse
, die Ihnen die Herstellung einer Verbindung mit einer vorhandenen Spark-Sitzung ermöglicht. Dadurch wird die Startzeit der sparklyr
-Sitzung erheblich reduziert. Darüber hinaus haben wir diese Verbindungsmethode zum Open Sourced Sparklyr-Projekt beigetragen. Mit method = "synapse"
können Sie sowohl sparklyr
als auch SparkR
in derselben Sitzung verwenden und problemlos Daten zwischen ihnen freigeben.
# 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", method = "synapse", 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)
Mithilfe von sparklyr
können Sie auch write
- und read
-Vorgänge für Daten aus einer Lakehouse-Datei über einen ABFS-Pfad ausführen. Um in einem Lakehouse zu lesen und zu schreiben, fügen Sie das Lakehouse zuerst zu Ihrer Sitzung hinzu. Wählen Sie auf der linken Seite des Notebooks die Option Hinzufügen aus, um ein vorhandenes Lakehouse hinzuzufügen oder ein neues zu erstellen.
Den ABFS-Pfad finden Sie, indem Sie mit der rechten Maustaste auf den Ordner Dateien in Ihrem Lakehouse klicken und dann ABFS-Pfad auswählen. Ersetzen Sie abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
in diesem Code durch den Pfad:
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
bietet mehrere Methoden zum Verarbeiten von Daten in Spark mithilfe von:
dplyr
-Befehle- SparkSQL
- Featuretransformatoren von Spark
Verwenden Sie dplyr
Sie können bekannte 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.
Unter Manipulating Data with dplyr
(Bearbeiten von Daten mit dplyr) finden Sie weitere Informationen zur Verwendung von dplyr mit Spark.
# 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 die R-Befehle für uns in Spark SQL. Verwenden Sie show_query()
, um die resultierende Abfrage anzuzeigen:
# 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 in einem Spark-Cluster auszuführen. Das spark_connection()
-Objekt implementiert eine DBI-Schnittstelle für Spark, sodass Sie dbGetQuery()
verwenden können, um SQL auszuführen und das Ergebnis in einem R-Dataframe zurückzugeben:
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
Verwenden von Featuretransformatoren
Beide oben beschriebenen Methoden verwenden SQL-Anweisungen. Spark stellt Befehle bereit, die einen Teil der Datentransformation bequemer machen, und zwar ohne die Verwendung von SQL.
Beispielsweise vereinfacht der Befehl ft_binarizer()
die Erstellung einer neuen Spalte, die angibt, ob der Wert einer anderen Spalte oberhalb eines bestimmten Schwellenwerts liegt.
Die vollständige Liste der Spark-Featuretransformatoren, die über sparklyr
verfügbar sind, finden Sie unter Reference – FT (Referenz zu FT).
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Teilen von Daten zwischen sparklyr
und SparkR
Wenn Sie eine Verbindung sparklyr
mit Synapse Spark Cluster mit method = "synapse"
herstellen, können Sie sowohl sparklyr
als auch SparkR
in derselben Sitzung verwenden und Daten problemlos freigeben. Sie können in sparklyr
eine Spark-Tabelle erstellen und diese aus SparkR
lesen.
# load the sparklyr package
library(sparklyr)
# Create table in `sparklyr`
mtcars_sparklyr <- copy_to(sc, df = mtcars, name = "mtcars_tbl", overwrite = TRUE, repartition = 3L)
# Read table from `SparkR`
mtcars_sparklr <- SparkR::sql("select cyl, count(*) as n
from mtcars_tbl
GROUP BY cyl
ORDER BY n DESC")
head(mtcars_sparklr)
Machine Learning
Hier sehen Sie ein Beispiel, in dem wir ml_linear_regression()
zum Anpassen eines Modells für die lineare Regression verwenden. Wir verwenden das integrierte Dataset mtcars
und wollen herausfinden, ob wir den Kraftstoffverbrauch eines Fahrzeugs (mpg
) basierend auf dem Fahrzeuggewicht (wt
) und der Anzahl der Zylinder (cyl
) vorhersagen können. In beiden Fällen nehmen wir an, dass die Beziehung zwischen mpg
und dem jeweiligen Feature linear ist.
Generieren von Test- und Trainingsdatensätzen
Verwenden Sie eine Aufteilung: 70 % für das Training und 30 % für das Testen des Modells. Die Verwendung unterschiedlicher Verhältnisse führt zu unterschiedlichen Modellen.
# 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 Modell für die logistische Regression.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Verwenden Sie jetzt summary()
, um sich über die Qualität unseres Modells und die statistische Bedeutung jedes Prädiktors zu informieren.
summary(fit)
Verwenden des Modells
Sie können das Modell auf das Testdataset anwenden, indem Sie ml_predict()
aufrufen.
pred <- ml_predict(fit, partitions$test)
head(pred)
Eine Liste der über sparklyr verfügbaren Spark ML-Modelle finden Sie unter Reference – ML (Referenz zu ML).
Trennen des Spark-Clusters
Sie können spark_disconnect()
aufrufen oder die Schaltfläche Sitzung beenden über dem Notebook-Menüband auswählen, um die Spark-Sitzung zu beenden.
spark_disconnect(sc)
Zugehöriger Inhalt
Weitere Informationen zu den R-Funktionen:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für