Del via


Bruk sparklyr

R-språk sparklyr-ressursen fungerer som et grensesnitt til Apache Spark. Sparklr-ressursen gir en mekanisme for å samhandle med Spark med kjente R-grensesnitt. Bruk sparklyr gjennom spark batch jobbdefinisjoner eller med interaktive Microsoft Fabric notatblokker.

sparklyr brukes med andre tidyverse pakker – for eksempel dplyr. Microsoft Fabric distribuerer den nyeste stabile versjonen av både sparklyr og tidyverse med hver runtime-utgivelse. Du kan importere disse ressursene og begynne å bruke API-en.

Forutsetninger

  • Å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

Funksjonstilkoblingsmetoden spark_connect() oppretter en sparklyr tilkobling. Funksjonen bygger en ny tilkoblingsmetode med navnet synapse, som kobler til en eksisterende Spark-økt. Det reduserer starttidspunktet for sparklyr økt dramatisk. Denne tilkoblingsmetoden er tilgjengelig i 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. Følgende eksempel på notatblokkcellekode bruker spark_connect() funksjonen:

# 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. Deretter må du enten laste inn data i Spark-øktens minne, eller peke Spark til plasseringen av dataene slik at økten 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)

Med sparklyrkan du også write og read data fra en Lakehouse-fil bruke en ABFS-baneverdi. Hvis du vil lese og skrive til en Lakehouse, må du først legge til Lakehouse i økten. På venstre side av notatblokken velger du Legg til for å legge til et eksisterende Lakehouse. I tillegg kan du opprette et Lakehouse.

Hvis du vil finne ABFS-banen, høyreklikker du Filer-mappen i Lakehouse og velger Kopier ABFS-bane. Lim inn banen for å erstatte abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files i følgende kodeeksempel:

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 ulike måter å behandle data på i Spark, med:

  • dplyr kommandoer
  • SparkSQL
  • Spark-funksjonstransformatorer

Bruk dplyr

Du kan bruke kjente dplyr kommandoer til å klargjøre data i Spark. Kommandoene kjører i Spark, og forhindrer unødvendige dataoverføringer mellom R og 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

Manipulering av data med dplyr ressurs gir mer informasjon om bruk av dplyr med Spark. sparklyr og dplyr oversett R-kommandoene til Spark SQL. Bruk show_query() denne til å vise den resulterende spørringen:

# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)

Bruk SQL

Du kan også 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 gir kommandoer som gjør noen datatransformasjoner mer praktiske, uten bruk av SQL. Kommandoen forenkler for eksempel ft_binarizer() opprettingen av en ny kolonne som angir om en verdi i en annen kolonne overskrider en bestemt terskel:

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

Reference -FT-ressursen tilbyr en fullstendig liste over Transformatorer for spark-funksjoner som er tilgjengelige via sparklyr.

Dele data mellom sparklyr og SparkR

Når du kobler sparklyr til spark-klyngen for synapse med method = "synapse", blir begge sparklyrSparkR tilgjengelige i samme økt og enkelt kan dele data mellom seg selv. Du kan opprette en spark-tabell i sparklyrog 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

Følgende eksempel bruker ml_linear_regression() til å tilpasse en lineær regresjonsmodell. Modellen bruker det innebygde mtcars datasettet til å prøve å forutsi drivstofforbruket (mpg) til en bil basert på bilens vekt (wt) og antall sylindere (cyl) på bilmotoren. Alle tilfeller her forutsetter en lineær relasjon mellom mpg og hver av funksjonene våre.

Generer datasett for testing og opplæring

Bruk en splitt - 70% for opplæring og 30% - for å teste modellen. Endringer i dette forholdet fører til 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 summary() denne til å lære mer om kvaliteten på modellen vår, og den statistiske betydningen av hver av våre prediktorer:

summary(fit)

Bruk modellen

Kall ml_predict() til å bruke modellen på testdatasettet:

pred <- ml_predict(fit, partitions$test)

head(pred)

til Referanse – ML for en liste over Spark ML-modeller som er tilgjengelige via sparklyr.

Koble fra Spark-klynge

Ring spark_disconnect(), eller velg Stopp økt-knappen øverst på notatblokkbåndet for å avslutte Spark-økten:

spark_disconnect(sc)

Finn ut mer om R-funksjonaliteten: