Brug sparklyr
sparklyr er en R-grænseflade til Apache Spark. Det giver en mekanisme til at interagere med Spark ved hjælp af velkendte R-grænseflader. Du kan bruge sparklyr via Spark-batchjobdefinitioner eller med interaktive Microsoft Fabric-notesbøger.
sparklyr
bruges sammen med andre ryddelige pakker, f.eks. dplyr. Microsoft Fabric distribuerer den nyeste stabile version af sparklyr og tidyverse med hver kørselsversion. Du kan importere dem og begynde at bruge API'en.
Forudsætninger
Få et Microsoft Fabric-abonnement. Du kan også tilmelde dig en gratis Microsoft Fabric-prøveversion.
Log på Microsoft Fabric.
Brug oplevelsesskifteren nederst til venstre på startsiden til at skifte til Fabric.
Åbn eller opret en notesbog. Du kan få mere at vide under Sådan bruger du Microsoft Fabric-notesbøger.
Angiv sprogindstillingen for at SparkR (R) for at ændre det primære sprog.
Vedhæft din notesbog til et lakehouse. I venstre side skal du vælge Tilføj for at tilføje et eksisterende lakehouse eller for at oprette et lakehouse.
Forbind sparklyr til Synapse Spark-klyngen
Brug følgende forbindelsesmetode i spark_connect()
til at oprette en sparklyr
forbindelse. Vi understøtter en ny forbindelsesmetode kaldet synapse
, som giver dig mulighed for at oprette forbindelse til en eksisterende Spark-session. Det reducerer starttidspunktet for sparklyr
session drastisk. Derudover har vi bidraget med denne forbindelsesmetode til sparklyrprojekt med åben kildekode. Med method = "synapse"
kan du både bruge sparklyr
og SparkR
i den samme session og nemt dele data mellem 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)
Brug sparklyr til at læse data
En ny Spark-session indeholder ingen data. Det første trin er enten at indlæse data i spark-sessionens hukommelse eller pege Spark på placeringen af dataene, så den kan få adgang til dataene efter 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 hjælp af sparklyr
kan du også write
og read
data fra en Lakehouse-fil ved hjælp af ABFS-stien. Hvis du vil læse og skrive til et Lakehouse, skal du først føje det til din session. I venstre side af notesbogen skal du vælge Tilføj for at tilføje et eksisterende Lakehouse eller oprette et Lakehouse.
Hvis du vil finde din ABFS-sti, skal du højreklikke på mappen filer i lakehouse og derefter vælge Kopiér ABFS-sti. Indsæt stien for at erstatte abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
i denne kode:
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)
Brug sparklyr til at manipulere data
sparklyr
indeholder flere metoder til behandling af data i Spark ved hjælp af:
-
dplyr
kommandoer - SparkSQL
- Sparks funktionstransformere
Brug dplyr
Du kan bruge velkendte dplyr
kommandoer til at forberede data i Spark. Kommandoerne kører i Spark, så der er ingen unødvendige dataoverførsler mellem R og Spark.
Klik på Manipulation af data med dplyr
for at se ekstra dokumentation om brug af 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
oversætte R-kommandoerne til Spark SQL for os. Hvis du vil se den resulterende forespørgsel, skal du bruge show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Brug SQL
Det er også muligt at udføre SQL-forespørgsler direkte mod tabeller i en Spark-klynge. Objektet spark_connection()
implementerer en DBI- grænseflade til Spark, så du kan bruge dbGetQuery()
til at udfø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")
Brug funktionstransformere
Begge de forrige metoder er afhængige af SQL-sætninger. Spark indeholder kommandoer, der gør nogle datatransformationer mere praktiske og uden brug af SQL.
Kommandoen ft_binarizer()
forenkler f.eks. oprettelsen af en ny kolonne, der angiver, om værdien af en anden kolonne er over en bestemt grænse.
Du kan finde den komplette liste over Spark Feature Transformers, der er tilgængelige via sparklyr
fra Reference -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Del data mellem sparklyr
og SparkR
Når du oprette forbindelse sparklyr
til synapse spark-klyngen med method = "synapse"
, kan du bruge både sparklyr
og SparkR
i den samme session og nemt dele data mellem dem. Du kan oprette en sparktabel i sparklyr
og læse 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)
Maskinel indlæring
Her er et eksempel, hvor vi bruger ml_linear_regression()
til at passe til en lineær regressionsmodel. Vi bruger det indbyggede mtcars
datasæt og ser, om vi kan forudsige en bils brændstofforbrug (mpg
) baseret på dens vægt (wt
), og antallet af cylindre, som motoren indeholder (cyl
). Vi antager i hvert enkelt tilfælde, at relationen mellem mpg
og hver af vores funktioner er lineær.
Generér test- og oplæringsdatasæt
Brug en opdeling, 70% til oplæring og 30% til test af modellen. Hvis du leger med dette forhold, resulterer det i forskellige 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)
Oplær modellen
Oplær modellen Logistisk regression.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Brug nu summary()
til at lære lidt mere om kvaliteten af vores model og den statistiske betydning af hver af vores forudsigelser.
summary(fit)
Brug modellen
Du kan anvende modellen på testdatasættet ved at kalde ml_predict()
.
pred <- ml_predict(fit, partitions$test)
head(pred)
Du kan finde en liste over Spark ML-modeller, der er tilgængelige via sparklyr, Reference – ML-
Afbryd forbindelsen til Spark-klyngen
Du kan kalde spark_disconnect()
til eller vælge knappen Stop session øverst på notesbogbåndet for at afslutte din Spark-session.
spark_disconnect(sc)
Relateret indhold
Få mere at vide om R-funktionerne: