Använd sparklyr

Sparklyr-resursen R-språk fungerar som ett gränssnitt till Apache Spark. Sparklr-resursen ger en mekanism för att interagera med Spark med välbekanta R-gränssnitt. Använd sparklyr via Spark batch-jobbdefinitioner eller med interaktiva Microsoft Fabric-notebook-filer.

sparklyr används med andra tidyverse-paket – till exempel dplyr. Microsoft Fabric distribuerar den senaste stabila versionen av både sparklyr och tidyverse med varje körningsversion. Du kan importera dessa resurser och börja använda API:et.

Förutsättningar

  • Öppna eller skapa en notebook-fil. För att lära dig hur, se Så här använder du Microsoft Fabric-notebooks.

  • Ange språkalternativet till SparkR (R) för att ändra det primära språket.

  • Bifoga anteckningsboken till ett sjöhus. Till vänster väljer du Lägg till för att lägga till ett befintligt sjöhus eller för att skapa ett sjöhus.

Ansluta sparklyr till Synapse Spark-kluster

Metoden spark_connect() för funktionsanslutning upprättar en sparklyr anslutning. Funktionen skapar en ny anslutningsmetod med namnet synapse, som ansluter till en befintlig Spark-session. Det minskar dramatiskt starttiden för sparklyr session. Den här anslutningsmetoden är tillgänglig i sparklyrprojektet med öppen källkod. Med method = "synapse"kan du använda både sparklyr och SparkR i samma session och enkelt dela data mellan dem. Följande notebook-cellkodexempel använder spark_connect() funktionen:

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

Använd sparklyr för att läsa data

En ny Spark-session innehåller inga data. Du måste sedan antingen läsa in data i Spark-sessionens minne eller peka Spark på platsen för data så att sessionen kan komma åt data på begäran:

# 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 sparklyr kan du också write och read data från en Lakehouse-fil med hjälp av ett ABFS-sökvägsvärde. Om du vill läsa och skriva till ett Lakehouse lägger du först till Lakehouse i din session. Till vänster i anteckningsboken väljer du Lägg till för att lägga till ett befintligt Lakehouse. Dessutom kan du skapa ett Lakehouse.

Om du vill hitta din ABFS-sökväg högerklickar du på mappen Filer i Lakehouse och väljer Kopiera ABFS-sökväg. Klistra in sökvägen som ska ersättas abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files i följande kodexempel:

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)

Använda sparklyr för att manipulera data

sparklyr tillhandahåller olika sätt att bearbeta data i Spark med:

  • dplyr kommandon
  • SparkSQL
  • Sparks funktionstransformatorer

Använd dplyr

Du kan använda välbekanta dplyr kommandon för att förbereda data i Spark. Kommandona körs i Spark, vilket förhindrar onödiga dataöverföringar mellan R och 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

Manipulera data med dplyr resursen ger mer information om användning av dplyr med Spark. sparklyr och dplyr översätta R-kommandona till Spark SQL. Använd show_query() för att visa den resulterande frågan:

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

Använda SQL

Du kan också köra SQL-frågor direkt mot tabeller i ett Spark-kluster. spark_connection() -objektet implementerar ett DBI--gränssnitt för Spark, så du kan använda dbGetQuery() för att köra SQL och returnera resultatet som en R-dataram:

library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")

Använda funktionstransformatorer

Båda de tidigare metoderna förlitar sig på SQL-instruktioner. Spark tillhandahåller kommandon som gör vissa datatransformeringar enklare, utan att använda SQL. Kommandot förenklar till exempel ft_binarizer() skapandet av en ny kolumn som anger om ett värde i en annan kolumn överskrider ett visst tröskelvärde eller inte:

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

Resursen Reference -FT innehåller en fullständig lista över Spark-funktionstransformatorer som är tillgängliga via sparklyr.

Dela data mellan sparklyr och SparkR

När du ansluter sparklyr till synapse spark-klustret med method = "synapse"blir båda sparklyrSparkR tillgängliga i samma session och kan enkelt dela data mellan sig. Du kan skapa en Spark-tabell i sparklyroch läsa den från 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)

Maskininlärning

I följande exempel används ml_linear_regression() för att passa en linjär regressionsmodell. Modellen använder den inbyggda mtcars datamängden för att försöka förutsäga bränsleförbrukningen (mpg) för en bil baserat på bilens vikt (wt) och antalet cylindrar (cyl) för bilmotorn. Alla fall här förutsätter en linjär relation mellan mpg och var och en av våra funktioner.

Generera datauppsättningar för testning och träning

Använd en uppdelning – 70% för träning och 30% – för att testa modellen. Ändringar i det här förhållandet leder till olika 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)

Träna modellen

Träna logistic regression-modellen.

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

fit

Använd summary() för att lära dig mer om kvaliteten på vår modell och den statistiska betydelsen av var och en av våra prediktorer:

summary(fit)

Använd modellen

Anropa ml_predict() för att tillämpa modellen på testdatauppsättningen:

pred <- ml_predict(fit, partitions$test)

head(pred)

Besök Referens – ML för en lista över Spark ML-modeller som är tillgängliga via sparklyr.

Koppla från Spark-kluster

Anropa spark_disconnect(), eller välj knappen Stoppa session högst upp i notebook-menyn för att avsluta Spark-sessionen.

spark_disconnect(sc)

Läs mer om R-funktionerna: