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.

Vigtigt

Microsoft Fabric fås som prøveversion.

sparklyr bruges sammen med andre tidyverse-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

  • Åbn eller opret en notesbog. Du kan få mere at vide under Sådan bruger du Microsoft Fabric-notesbøger.

  • Skift det primære sprog ved at angive sprogindstillingen til SparkR (R).

  • Vedhæft din notesbog til et lakehouse. I venstre side skal du vælge Tilføj for at tilføje et eksisterende lakehouse eller oprette et lakehouse.

Forbind sparklyr til Synapse Spark-klyngen

Brug følgende forbindelsesmetode i spark_connect() til at oprette en sparklyr forbindelse.

# 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", 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 sparksessionens 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 sparklyrkan 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 den sti, der skal erstattes 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 få vist 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æt 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 for 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 tidligere metoder er afhængige af SQL-sætninger. Spark indeholder kommandoer, der gør nogle datatransformationer mere praktiske og uden brug af SQL.

Kommandoen forenkler f.eks ft_binarizer() . 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, som du kan få adgang til via sparklyrReference -FT.

mtcars_tbl %>% 
  ft_binarizer("mpg", "over_20", threshold = 20) %>% 
  select(mpg, over_20) %>% 
  head(5)

Maskinel indlæring

Her er et eksempel, hvor vi kan bruge ml_linear_regression() til at tilpasse 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 datasæt til test og oplæring

Brug en enkel opdeling, 70 % til oplæring og 30 % til test af modellen. Hvis du spiller med dette forhold, kan det resultere 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 summary() nu til at få lidt mere at vide 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, under Reference – ML

Afbryd forbindelsen til Spark-klyngen

Du kan kalde spark_disconnect() op til eller vælge knappen Stop session oven på notesbogbåndet og afslutte din Spark-session.

spark_disconnect(sc)

Næste trin

Få mere at vide om R-funktionerne: