Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
Szerezzen be egy Microsoft Fabric-előfizetést. Vagy regisztráljon egy ingyenes Microsoft Fabric próbaverzióra.
Jelentkezzen be a Microsoft Fabric.
A kezdőlap bal alsó részén található élménykapcsolóval válthat Fabricre.
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:
-
dplyrparancsok - 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)
Kapcsolódó tartalom
További információ az R funkcióiról: