Använd 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 Microsoft Fabric-utvärderingsversion.
Logga in på Microsoft Fabric.
Använd väljaren längst ned till vänster på startsidan för att växla till Fabric.
Ö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
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 dramatiskt starttiden för sparklyr
session. Dessutom bidrog vi med den här anslutningsmetoden till sparklyr-projekt 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.
# 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. 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 hjälp av sparklyr
kan du också write
och read
data från en Lakehouse-fil med hjälp av ABFS-sökvägen. För att läsa och skriva i 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 en ny Lakehouse.
Om du vill hitta din ABFS-sökväg högerklickar du på mappen Files i Lakehouse och väljer sedan Kopiera ABFS-sökväg. Klistra in din filväg för att ersätta 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änd 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.
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 viss datatransformering enklare och utan användning av SQL.
Kommandot ft_binarizer()
förenklar till exempel 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
från 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 passa 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
). Vi förutsätter i varje fall 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 split, 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
Använd nu summary()
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änd 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 Reference – ML
Koppla från Spark-kluster
Du kan anropa spark_disconnect()
till eller välja knappen Stoppa session ovanpå notebook-menyfliksområdet avsluta Spark-sessionen.
spark_disconnect(sc)
Relaterat innehåll
Läs mer om R-funktionerna: