Sparklyr gebruiken
sparklyr- is een R-interface voor Apache Spark. Het biedt een mechanisme voor interactie met Spark met behulp van vertrouwde R-interfaces. U kunt sparklyr gebruiken via Spark Batch-taakdefinities of met interactieve Microsoft Fabric-notebooks.
sparklyr
wordt samen met andere tidyverse pakketten zoals dplyr-gebruikt. Microsoft Fabric distribueert de nieuwste stabiele versie van sparklyr en tidyverse met elke runtimerelease. U kunt ze importeren en de API gaan gebruiken.
Voorwaarden
Een Microsoft Fabric-abonnementophalen. Of meld u aan voor een gratis microsoft Fabric-proefversie.
Meld u aan bij Microsoft Fabric-.
Gebruik de ervaringswisselaar aan de linkerkant van de startpagina om over te schakelen naar Fabric.
Open of maak een notitieblok. Om te leren hoe, zie Hoe u Microsoft Fabric-notebooks kunt gebruiken.
Stel de taaloptie in op SparkR- om de primaire taal te wijzigen.
Koppel uw notitieblok aan een lakehouse. Selecteer aan de linkerkant Voeg toe om een bestaand lakehouse toe te voegen of om een lakehouse te maken.
Sparklyr verbinden met Synapse Spark-cluster
Gebruik de volgende verbindingsmethode in spark_connect()
om een sparklyr
verbinding tot stand te brengen. We ondersteunen een nieuwe verbindingsmethode met de naam synapse
, waarmee u verbinding kunt maken met een bestaande Spark-sessie. Het vermindert de starttijd van de sparklyr
sessie aanzienlijk. Daarnaast hebben we deze verbindingsmethode bijgedragen aan het open source sparklyr-project. Met method = "synapse"
kunt u zowel sparklyr
als SparkR
in dezelfde sessie gebruiken en eenvoudig gegevens tussen dezedelen.
# 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)
Sparklyr gebruiken om gegevens te lezen
Een nieuwe Spark-sessie bevat geen gegevens. De eerste stap is het laden van gegevens in het geheugen van uw Spark-sessie, of Spark naar de locatie van de gegevens verwijzen, zodat deze toegang heeft tot de gegevens op aanvraag.
# 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)
Met sparklyr
kunt u ook gegevens write
en read
uit een Lakehouse-bestand met behulp van het ABFS-pad. Om te lezen en te schrijven naar een Lakehouse, voeg deze eerst toe aan uw sessie. Selecteer aan de linkerkant van het notitieblok Add om een bestaand Lakehouse toe te voegen of een Lakehouse te maken.
Als u uw ABFS-pad wilt vinden, klikt u met de rechtermuisknop op de map Bestanden in uw Lakehouse en selecteert u vervolgens ABFS-pad kopiƫren. Plak uw pad om abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
in deze code te vervangen:
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)
Sparklyr gebruiken om gegevens te bewerken
sparklyr
biedt meerdere methoden voor het verwerken van gegevens in Spark met behulp van:
- opdrachten voor
dplyr
- SparkSQL
- Functietransformatoren van Spark
Gebruik dplyr
U kunt vertrouwde dplyr
opdrachten gebruiken om gegevens in Spark voor te bereiden. De opdrachten worden uitgevoerd in Spark, dus er zijn geen onnodige gegevensoverdrachten tussen R en Spark.
Klik op de Gegevens bewerken met dplyr
om extra documentatie weer te geven over het gebruik van dplyr met 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
en dplyr
de R-opdrachten voor ons vertalen naar Spark SQL. Als u de resulterende query wilt zien, gebruikt u show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
SQL gebruiken
Het is ook mogelijk om SQL-query's rechtstreeks uit te voeren op tabellen in een Spark-cluster. Het spark_connection()
-object implementeert een DBI--interface voor Spark, zodat u dbGetQuery()
kunt gebruiken om SQL uit te voeren en het resultaat als een R-gegevensframe te retourneren:
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
Functietransformatoren gebruiken
Beide methoden zijn afhankelijk van SQL-instructies. Spark biedt opdrachten die sommige gegevenstransformatie handiger maken en zonder sql te gebruiken.
De opdracht ft_binarizer()
vereenvoudigt bijvoorbeeld het maken van een nieuwe kolom die aangeeft of de waarde van een andere kolom boven een bepaalde drempelwaarde ligt.
U vindt de volledige lijst met Spark-functietransformatoren die beschikbaar zijn via sparklyr
van Reference -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Gegevens delen tussen sparklyr
en SparkR
Wanneer u sparklyr
verbindt met een Synapse Spark-cluster met method = "synapse"
, kunt u zowel sparklyr
als SparkR
in dezelfde sessie gebruiken en eenvoudig gegevens tussen deze clusters delen. U kunt een Spark-tabel maken in sparklyr
en deze lezen uit SparkR
.
# 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 volgt een voorbeeld waarin we ml_linear_regression()
gebruiken om een lineair regressiemodel aan te passen. We gebruiken de ingebouwde mtcars
gegevensset en kijken of we het brandstofverbruik (mpg
) van een auto kunnen voorspellen op basis van het gewicht (wt
) en het aantal cilinders dat de motor bevat (cyl
). In elk geval wordt ervan uitgegaan dat de relatie tussen mpg
en elk van onze functies lineair is.
Test- en trainingsgegevenssets genereren
Gebruik een verdeling van 70% voor training en 30% voor het testen van het model. Spelen met deze verhouding resulteert in verschillende 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)
Het model trainen
Train het Logistic Regression-model.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Gebruik nu summary()
om meer te weten te komen over de kwaliteit van ons model en de statistische significantie van elk van onze voorspellingsfactoren.
summary(fit)
Het model gebruiken
U kunt het model toepassen op de testgegevensset door ml_predict()
aan te roepen.
pred <- ml_predict(fit, partitions$test)
head(pred)
Ga naar Reference - ML- voor een lijst met Spark ML-modellen die beschikbaar zijn via sparklyr
Verbinding met Spark-cluster verbreken
U kunt naar spark_disconnect()
bellen of de knop Sessie stoppen op het notitiebloklint selecteren om uw Spark-sessie te beƫindigen.
spark_disconnect(sc)
Verwante inhoud
Meer informatie over de R-functionaliteiten: