Använda sparklyr
sparklyr är ett R-gränssnitt till Apache Spark. Det ger en mekanism för att interagera med Spark med hjälp av välbekanta R-gränssnitt. Du kan använda sparklyr via Spark batch-jobbdefinitioner eller med interaktiva Microsoft Fabric-notebook-filer.
sparklyr
används tillsammans med andra tidyverse-paket som dplyr. Microsoft Fabric distribuerar den senaste stabila versionen av sparklyr och tidyverse med varje körningsversion. Du kan importera dem och börja använda API:et.
Förutsättningar
Skaffa en Microsoft Fabric-prenumeration. Eller registrera dig för en kostnadsfri utvärderingsversion av Microsoft Fabric.
Logga in på Microsoft Fabric.
Använd upplevelseväxlaren till vänster på startsidan för att växla till Synapse Datavetenskap upplevelse.
Öppna eller skapa en notebook-fil. Mer information finns i Använda Microsoft Fabric-notebook-filer.
Ange språkalternativet 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.
Anslut sparklyr till Synapse Spark-kluster
Använd följande anslutningsmetod i spark_connect()
för att upprätta en sparklyr
anslutning. Vi stöder en ny anslutningsmetod med namnet synapse
, som gör att du kan ansluta till en befintlig Spark-session. Det minskar sessionens sparklyr
starttid avsevärt. Dessutom bidrog vi med den här anslutningsmetoden till öppen källkod d sparklyr-projektet. Med method = "synapse"
kan du använda både sparklyr
och SparkR
i samma session och enkelt dela data mellan 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)
Använda sparklyr för att läsa data
En ny Spark-session innehåller inga data. Det första steget är att antingen läsa in data i Spark-sessionens minne eller peka Spark på platsen för data så att de 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 kan sparklyr
du också write
och read
data från en Lakehouse-fil med hjälp av ABFS-sökvägen. Om du vill läsa och skriva till en Lakehouse lägger du först till den i sessionen. Till vänster i anteckningsboken väljer du Lägg till för att lägga till ett befintligt Lakehouse eller skapa ett Lakehouse.
Om du vill hitta din ABFS-sökväg högerklickar du på mappen Filer i Lakehouse och väljer sedan Kopiera ABFS-sökväg. Klistra in sökvägen som ska ersättas abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
i den här 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)
Använda sparklyr för att manipulera data
sparklyr
innehåller flera metoder för att bearbeta data i Spark med hjälp av:
dplyr
Kommandon- SparkSQL
- Sparks funktionstransformatorer
Använda dplyr
Du kan använda välbekanta dplyr
kommandon för att förbereda data i Spark. Kommandona körs i Spark, så det finns inga onödiga dataöverföringar mellan R och Spark.
Klicka på Manipulera data med dplyr
för att se extra dokumentation om hur du använder 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
och dplyr
översätta R-kommandona till Spark SQL åt oss. Om du vill se den resulterande frågan använder du show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Använda SQL
Det går också att köra SQL-frågor direkt mot tabeller i ett Spark-kluster. Objektet spark_connection()
implementerar ett DBI-gränssnitt för Spark, så att 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 viss datatransformering enklare och utan användning av SQL.
Kommandot förenklar till exempel ft_binarizer()
skapandet av en ny kolumn som anger om värdet för en annan kolumn ligger över ett visst tröskelvärde.
Du hittar den fullständiga listan över Spark-funktionstransformatorer som är tillgängliga via sparklyr
reference -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Dela data mellan sparklyr
och SparkR
När du ansluter sparklyr
till synapse spark-kluster med method = "synapse"
kan du använda både sparklyr
och SparkR
i samma session och enkelt dela data mellan dem. Du kan skapa en spark-tabell i sparklyr
och 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
Här är ett exempel där vi använder ml_linear_regression()
för att anpassa en linjär regressionsmodell. Vi använder den inbyggda mtcars
datamängden och ser om vi kan förutsäga en bils bränsleförbrukning (mpg
) baserat på dess vikt (wt
) och antalet cylindrar som motorn innehåller (cyl
). I varje enskilt fall förutsätter vi att relationen mellan mpg
och var och en av våra funktioner är linjär.
Generera datauppsättningar för testning och träning
Använd en delning, 70 % för träning och 30 % för att testa modellen. Om du spelar med det här förhållandet får du 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
summary()
Använd nu för att lära dig lite mer om kvaliteten på vår modell och den statistiska betydelsen av var och en av våra prediktorer.
summary(fit)
Använda modellen
Du kan använda modellen på testdatauppsättningen genom att anropa ml_predict()
.
pred <- ml_predict(fit, partitions$test)
head(pred)
En lista över Spark ML-modeller som är tillgängliga via sparklyr finns i Referens – ML
Koppla från Spark-kluster
Du kan anropa spark_disconnect()
till eller välja knappen Stoppa session ovanpå notebook-menyfliksområdet och avsluta Spark-sessionen.
spark_disconnect(sc)
Relaterat innehåll
Läs mer om R-funktionerna: