Bruk sparklyr
sparklyr er et R-grensesnitt til Apache Spark. Det gir en mekanisme for å samhandle med Spark ved hjelp av kjente R-grensesnitt. Du kan bruke sparklyr gjennom spark batch jobbdefinisjoner eller med interaktive Microsoft Fabric notatblokker.
sparklyr
brukes sammen med andre ryddige pakker, for eksempel dplyr. Microsoft Fabric distribuerer den nyeste stabile versjonen av sparklyr og tidyvers med hver runtime-utgivelse. Du kan importere dem og begynne å bruke API-en.
Forutsetninger
Få et Microsoft Fabric-abonnement. Eller registrer deg for en gratis Prøveversjon av Microsoft Fabric.
Logg på Microsoft Fabric.
Bruk opplevelsesbryteren nederst til venstre på hjemmesiden for å bytte til Fabric.
Åpne eller opprett en notatblokk. Hvis du vil lære hvordan du gjør det, kan du se Slik bruker du Microsoft Fabric-notatblokker.
Angi språkalternativet til SparkR (R)- for å endre primærspråket.
Legg notatblokken til et lakehouse. På venstre side velger du Legg til for å legge til et eksisterende innsjøhus eller opprette et innsjøhus.
Koble sparklyr til Synapse Spark-klynge
Bruk følgende tilkoblingsmetode i spark_connect()
til å opprette en sparklyr
tilkobling. Vi støtter en ny tilkoblingsmetode kalt synapse
, som lar deg koble til en eksisterende Spark-økt. Det reduserer starttidspunktet for sparklyr
økt dramatisk. I tillegg har vi bidratt med denne tilkoblingsmetoden til sparklyr-prosjektet med åpen kildekode. Med method = "synapse"
kan du bruke både sparklyr
og SparkR
i samme økt og enkelt dele data mellom dem.
# 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)
Bruk sparklyr til å lese data
En ny Spark-økt inneholder ingen data. Det første trinnet er enten å laste inn data i Spark-øktens minne, eller peke Spark til plasseringen av dataene slik at de får tilgang til dataene ved behov.
# 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)
Ved hjelp av sparklyr
kan du også write
og read
data fra en Lakehouse-fil ved hjelp av ABFS-bane. Hvis du vil lese og skrive til et Lakehouse, må du først legge det til i økten. På venstre side av notatblokken velger du Legg til for å legge til et eksisterende Lakehouse eller opprette et Lakehouse.
Hvis du vil finne ABFS-banen, høyreklikker du på mappen Files i Lakehouse, og deretter velger du Kopier ABFS-bane. Lim inn banen for å erstatte abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
i denne koden:
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)
Bruk sparklyr til å manipulere data
sparklyr
inneholder flere metoder for å behandle data i Spark ved hjelp av:
-
dplyr
kommandoer - SparkSQL
- Spark-funksjonstransformatorer
Bruk dplyr
Du kan bruke kjente dplyr
kommandoer til å klargjøre data i Spark. Kommandoene kjører i Spark, så det er ingen unødvendige dataoverføringer mellom R og Spark.
Klikk Manipulere data med dplyr
for å se ekstra dokumentasjon om hvordan du bruker dplyr med 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
og dplyr
oversette R-kommandoene til Spark SQL for oss. Hvis du vil se den resulterende spørringen, bruker du show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Bruk SQL
Det er også mulig å kjøre SQL-spørringer direkte mot tabeller i en Spark-klynge. Det spark_connection()
objektet implementerer et DBI- grensesnitt for Spark, slik at du kan bruke dbGetQuery()
til å kjøre SQL og returnere resultatet som en R-dataramme:
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
Bruk funksjonstransformatorer
Begge de tidligere metodene er avhengige av SQL-setninger. Spark inneholder kommandoer som gjør litt datatransformasjon mer praktisk, og uten bruk av SQL.
Kommandoen ft_binarizer()
forenkler for eksempel opprettingen av en ny kolonne som angir om verdien for en annen kolonne er over en bestemt terskel.
Du finner den fullstendige listen over Spark Feature Transformers tilgjengelig via sparklyr
fra Reference -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Dele data mellom sparklyr
og SparkR
Når du koble sparklyr
til synapse spark-klynge med method = "synapse"
, kan du bruke både sparklyr
og SparkR
i samme økt og enkelt dele data mellom dem. Du kan opprette en spark-tabell i sparklyr
og lese den fra 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)
Maskinlæring
Her er et eksempel der vi bruker ml_linear_regression()
til å tilpasse en lineær regresjonsmodell. Vi bruker det innebygde mtcars
datasettet, og ser om vi kan forutsi bilens drivstofforbruk (mpg
) basert på vekten (wt
), og antall sylindere motoren inneholder (cyl
). Vi antar i hvert tilfelle at relasjonen mellom mpg
og hver av funksjonene våre er lineær.
Generer datasett for testing og opplæring
Bruk en splitt, 70% for opplæring og 30% for testing av modellen. Avspilling med dette forholdet resulterer i ulike modeller.
# 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)
Kalibrer modellen
Kalibrer logistikkregresjonsmodellen.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Bruk nå summary()
til å lære litt mer om kvaliteten på modellen vår, og den statistiske betydningen av hver av våre prediktorer.
summary(fit)
Bruk modellen
Du kan bruke modellen på testdatasettet ved å ringe ml_predict()
.
pred <- ml_predict(fit, partitions$test)
head(pred)
Hvis du vil ha en liste over Spark ML-modeller som er tilgjengelige via sparklyr, kan du gå til Reference – ML
Koble fra Spark-klynge
Du kan ringe spark_disconnect()
til eller velge Stopp-økten-knappen øverst på notatblokkbåndet avslutte Spark-økten.
spark_disconnect(sc)
Relatert innhold
Finn ut mer om R-funksjonaliteten: