Bruk sparklyr

sparklyr er et R-grensesnitt til Apache Spark. Den gir en mekanisme for å samhandle med Spark ved hjelp av kjente R-grensesnitt. Du kan bruke sparklyr gjennom spark batch jobb definisjoner eller med interaktive Microsoft Fabric notatblokker.

Viktig

Microsoft Fabric er for øyeblikket i FORHÅNDSVERSJON. Denne informasjonen er knyttet til et forhåndsutgitt produkt som kan endres vesentlig før det utgis. Microsoft gir ingen garantier, uttrykt eller underforstått, med hensyn til informasjonen som er oppgitt her.

sparklyr brukes sammen med andre ryddige pakker, for eksempel dplyr. Microsoft Fabric distribuerer den nyeste stabile versjonen av sparklyr og tidyverse med hver kjøretidsutgivelse. Du kan importere dem og begynne å bruke API-en.

Forutsetninger

  • Åpne eller opprette en notatblokk. Hvis du vil lære hvordan du gjør det, kan du se Slik bruker du Microsoft Fabric-notatblokker.

  • Endre primærspråket ved å angi språkalternativet til SparkR (R).

  • Legg ved notatblokken i et lakehouse. Velg Legg til på venstre side for å legge til et eksisterende lakehouse eller opprette et lakehouse.

Koble sparklyr til Synapse Spark-klynge

Bruk følgende tilkoblingsmetode til spark_connect() å opprette en sparklyr tilkobling.

# 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)

Bruke 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 kan få 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-banen. Hvis du vil lese og skrive til en Lakehouse, må du først legge den til i økten. Velg Legg til på venstre side av notatblokken for å legge til et eksisterende Lakehouse eller opprette et Lakehouse.

Hvis du vil finne ABFS-banen, høyreklikker du på Filer-mappen i Lakehouse, og deretter velger du Kopier ABFS-banen. Lim inn banen som skal erstattes 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)

Bruke sparklyr til å manipulere data

sparklyr inneholder flere metoder for å behandle data i Spark ved hjelp av:

  • dplyr Kommandoer
  • SparkSQL
  • Sparks funksjonstransformatorer

Bruke 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 på Manipulating Data with 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 oversett R-kommandoene til Spark SQL for oss. Slik ser du den resulterende spørringsbruken 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. Objektet spark_connection() 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 forrige metodene er avhengige av SQL-setninger. Spark inneholder kommandoer som gjør litt datatransformasjon mer praktisk, og uten bruk av SQL.

Kommandoen forenkler for eksempel ft_binarizer() opprettingen av en ny kolonne som angir om verdien til en annen kolonne er over en bestemt terskel.

Du finner den fullstendige listen over Transformatorer for Spark-funksjoner som er tilgjengelige sparklyr fra Reference -FT.

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

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 test- og opplæringsdatasett

Bruk en enkel deling, 70 % for opplæring og 30 % for testing av modellen. Avspilling med dette forholdet kan resultere i forskjellige 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)

Lær opp modellen

Lær opp den logistiske regresjonsmodellen.

fit <- partitions$training %>%
  ml_linear_regression(mpg ~ .)

fit

summary() Bruk nå 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 Referanse – ML

Koble fra Spark-klyngen

Du kan ringe spark_disconnect() til eller velge Stopp økt-knappen øverst på notatblokkbåndet for å avslutte Spark-økten.

spark_disconnect(sc)

Neste trinn

Mer informasjon om R-funksjonene: