Megosztás a következőn keresztül:


Használja a sparklyr-t

Sparklyr az Apache Spark R-felülete. Olyan mechanizmust biztosít, amellyel a Spark jól ismert R-felületekkel kommunikálhat. A Sparklyr a Spark batch-feladatdefiníciókkal vagy interaktív Microsoft Fabric-jegyzetfüzetekkel is használható.

A sparklyr más rendezett csomagokkal, például a dplyrcsomaggal együtt használják. A Microsoft Fabric minden futtatókörnyezeti kiadással elosztja a Sparklyr és a Tidyverse legújabb stabil verzióját. Importálhatja őket, és megkezdheti az API használatát.

Előfeltételek

  • Nyisson meg vagy hozzon létre egy jegyzetfüzetet. További információ: Microsoft Fabric-jegyzetfüzetek használata.

  • Állítsa a nyelvi beállítást SparkR (R) az elsődleges nyelv megadásához.

  • Csatolja a jegyzetfüzetet egy tóházhoz. A bal oldalon válassza a hozzáadása lehetőséget egy meglévő tóház hozzáadásához vagy egy tóház létrehozásához.

Sparklyr csatlakoztatása a Synapse Spark-klaszterhez

A következő kapcsolati módszert használatával hozzon létre sparklyr kapcsolatot spark_connect()-ban. Támogatjuk a synapsenevű új kapcsolati módszert, amely lehetővé teszi a meglévő Spark-munkamenethez való csatlakozást. Jelentősen csökkenti a sparklyr munkamenet kezdési idejét. Emellett ezt a kapcsolódási módszert is a nyílt forráskódú Sparklyr-projekthez. A method = "synapse"sparklyr és SparkR is használhatja ugyanabban a munkamenetben, és egyszerűen adatokat megosztani közöttük.

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

Adatok olvasása a Sparklyr használatával

Egy új Spark-munkamenet nem tartalmaz adatokat. Első lépésként be kell töltenie az adatokat a Spark-munkamenet memóriájába, vagy a Sparkot az adatok helyére kell mutatnia, hogy igény szerint hozzáférhessen az adatokhoz.

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

A sparklyrhasználatával egy Lakehouse-fájlból is write és read adatokat az ABFS-elérési úttal. Ahhoz, hogy egy Lakehouse-hoz hozzáférhessen olvasásra és írásra, először adja hozzá a munkamenetéhez. A jegyzetfüzet bal oldalán válassza a hozzáadása meglévő Lakehouse hozzáadásához vagy Lakehouse létrehozásához.

Az ABFS-elérési út megkereséséhez kattintson a jobb gombbal a Fájlok mappára a Lakehouse-ban, majd válassza Az ABFS-elérési út másolásalehetőséget. Illessze be az elérési utat a abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files helyére ebben a kódban:

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)

Adatok kezelése a Sparklyr használatával

sparklyr több módszert is kínál az adatok Sparkon belüli feldolgozására a következő használatával:

  • dplyr parancsok
  • SparkSQL
  • A Spark funkcióátalakítói

dplyr használata

Az ismert dplyr parancsokkal előkészítheti az adatokat a Sparkban. A parancsok a Sparkban futnak, így nincs szükségtelen adatátvitel az R és a Spark között.

Kattintson a Adatok manipulálása dplyr segítségével lehetőségre, és tekintse meg a Sparkkal való dplyr használatáról szóló további dokumentációt.

# 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 és dplyr lefordítják számunkra az R-parancsokat a Spark SQL-re. Az eredményként kapott lekérdezés megtekintéséhez használja a show_query():

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

Az SQL használata

Sql-lekérdezéseket közvetlenül is végrehajthat a Spark-fürtön belüli táblákon. A spark_connection() objektum egy DBI- felületet implementál a Sparkhoz, így dbGetQuery() használatával hajthatja végre az SQL-t, és R-adatkeretként adja vissza az eredményt:

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

Funkcióátalakítók használata

Az előző metódusok mindegyike SQL-utasításokra támaszkodik. A Spark olyan parancsokat biztosít, amelyek kényelmesebbé teszik az adatátalakítást, és nem használják az SQL-t.

A ft_binarizer() parancs például leegyszerűsíti egy új oszlop létrehozását, amely jelzi, hogy egy másik oszlop értéke egy bizonyos küszöbérték felett van-e.

A Spark-funkcióátalakítók teljes listája elérhető a sparklyrReferenciánál -FT.

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

Adatok megosztása sparklyr és SparkR között

Amikor a sparklyr-t a Synapse Spark-fürthöz csatlakoztatja a method = "synapse"segítségével, akkor ugyanabban a munkamenetben használhatja a sparklyr és a SparkR elemeket, és így könnyedén megoszthatja az adatokat közöttük. Létrehozhat egy Spark táblát a sparklyr-ben, és elolvashatja a SparkR-ből.

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

Gépi tanulás

Íme egy példa, amelyben ml_linear_regression() használunk egy lineáris regressziós modell illeszkedéséhez. A beépített mtcars adatkészletet használjuk, és megállapítjuk, hogy meg tudjuk-e előrejelezni az autó üzemanyag-fogyasztását (mpg) a tömege (wt) és a motor által tartalmazott hengerek száma (cyl) alapján. Minden esetben feltételezzük, hogy a mpg és az egyes funkciók közötti kapcsolat lineáris.

Tesztelési és betanítási adatkészletek létrehozása

A modell képzéséhez használjon bontást: 70%% és a teszteléséhez pedig 30%%. Ezzel az aránysal való lejátszás különböző modelleket eredményez.

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

A modell betanítása

A logisztikai regressziós modell betanítása.

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

fit

Most summary() használatával többet tudhat meg a modell minőségéről és az egyes prediktorok statisztikai jelentőségéről.

summary(fit)

A modell használata

A modellt a tesztadatkészleten a ml_predict()meghívásával alkalmazhatja.

pred <- ml_predict(fit, partitions$test)

head(pred)

A Sparklyrben elérhető Spark ML-modellek listájáért látogasson el Referencia – ML

Kapcsolat bontása a Spark-fürtről

Meghívhatja spark_disconnect(), vagy kiválaszthatja a Munkamenet leállítása gombot a jegyzetfüzet menüszalagján, és befejezheti a Spark-munkamenetet.

spark_disconnect(sc)

További információ az R funkcióiról: