Verwenden von Sparklyr
sparklyr ist eine R-Schnittstelle zu Apache Spark. Es bietet einen Mechanismus für die Interaktion mit Spark mithilfe vertrauter R-Schnittstellen. Sie können Sparklyr über Spark-Batch-Job-Definitionen oder mit interaktiven Microsoft Fabric-Notizbüchern verwenden.
sparklyr
wird zusammen mit anderen Tidyverse--Paketen wie dplyrverwendet. Microsoft Fabric verteilt die neuesten stabilen Versionen von sparklyr und tidyverse mit jedem Runtimerelease. Sie können sie importieren und mit der Verwendung der API beginnen.
Voraussetzungen
Erhalten Sie ein Microsoft Fabric-Abonnement. Oder registrieren Sie sich für eine kostenlose Microsoft Fabric-Testversion.
Melden Sie sich bei Microsoft Fabrican.
Verwenden Sie den Erfahrungsschalter auf der unteren linken Seite Ihrer Startseite, um zu Fabric zu wechseln.
Öffnen oder Erstellen eines Notizbuchs Informationen dazu finden Sie unter Verwenden von Microsoft Fabric-Notizbüchern.
Legen Sie die Sprachoption auf SparkR (R)- fest, um die primäre Sprache zu ändern.
Fügen Sie Ihr Notizbuch an ein Seehaus an. Wählen Sie auf der linken Seite Hinzufügen aus, um ein vorhandenes Seehaus hinzuzufügen oder ein Seehaus zu erstellen.
Verbinden von Sparklyr mit Synapse Spark-Cluster
Verwenden Sie die folgende Verbindungsmethode in spark_connect()
, um eine sparklyr
Verbindung herzustellen. Wir unterstützen eine neue Verbindungsmethode namens synapse
, mit der Sie eine Verbindung mit einer vorhandenen Spark-Sitzung herstellen können. Dadurch wird die Startzeit der sparklyr
Sitzung erheblich reduziert. Darüber hinaus haben wir diese Verbindungsmethode zum Open Sourced Sparklyr-Projektbeigetragen. 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, Daten entweder in den Speicher Ihrer Spark-Sitzung zu laden oder Spark auf den Speicherort der Daten zu verweisen, damit sie 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.
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 kopierenaus. Fügen Sie Ihren Pfad ein, um abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
in diesem Code zu ersetzen:
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 vertraute dplyr
Befehle verwenden, um Daten in Spark vorzubereiten. Die Befehle werden in Spark ausgeführt, daher gibt es keine unnötigen Datenübertragungen zwischen R und Spark.
Unter 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. Um die Ergebnisabfrage anzuzeigen, verwenden Sie show_query()
:
# 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 als R-Datenrahmen 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 vorherigen Methoden basieren auf SQL-Anweisungen. Spark stellt Befehle bereit, mit denen einige Datentransformationen bequemer und ohne die Verwendung von SQL sind.
Beispielsweise vereinfacht der Befehl ft_binarizer()
die Erstellung einer neuen Spalte, die angibt, ob der Wert einer anderen Spalte über einem bestimmten Schwellenwert liegt.
Die vollständige Liste der Spark-Featuretransformatoren, die über sparklyr
verfügbar sind, finden Sie unter Referenz zu FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Freigeben 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)
Maschinelles Lernen
Hier ist ein Beispiel, in dem wir ml_linear_regression()
verwenden, um ein lineares Regressionsmodell anzupassen. Wir verwenden das integrierte mtcars
-Dataset und sehen, ob wir den Kraftstoffverbrauch eines Autos (mpg
) basierend auf seinem Gewicht (wt
) vorhersagen können und die Anzahl der Zylinder, die der Motor enthält (cyl
). Wir gehen in jedem Fall davon aus, dass die Beziehung zwischen mpg
und jedem unserer Features linear ist.
Generieren von Test- und Schulungsdatensätzen
Verwenden Sie eine Aufteilung: 70% für das Training und 30% für das Testen des Modells. Das Experimentieren mit diesem Verhältnis 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 Logistische Regressionsmodell.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Verwenden Sie nun summary()
, um etwas mehr über die Qualität unseres Modells und die statistische Bedeutung jeder unserer Prädiktoren zu erfahren.
summary(fit)
Modell verwenden
Sie können das Modell auf das Test-Dataset anwenden, indem Sie ml_predict()
aufrufen.
pred <- ml_predict(fit, partitions$test)
head(pred)
Eine Liste der Spark ML-Modelle, die über Sparklyr verfügbar sind, finden Sie unter Reference - 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)
Verwandte Inhalte
Weitere Informationen zu den R-Funktionen: