Používanie sparklyr
sparklyr je rozhraním R pre Apache Spark. Poskytuje mechanizmus na interakciu so službou Spark pomocou známych rozhraní R. Iskru môžete použiť prostredníctvom definícií dávkových úloh služby Spark alebo pomocou interaktívnych poznámkových blokov služby Microsoft Fabric.
sparklyr
sa používa spolu s inými balíkmi, ako napríklad dplyr. Microsoft Fabric distribuuje najnovšiu stabilnú verziu sparklyr a tidyverse s každým vydaním modulu runtime. Môžete ich importovať a začať používať rozhranie API.
Predpoklady
Získajte predplatné služby Microsoft Fabric . Alebo si zaregistrujte bezplatnú skúšobnú služby Microsoft Fabric.
Prihláste sa do služby Microsoft Fabric.
Pomocou prepínača skúseností v ľavej dolnej časti domovskej stránky sa prepnete na službu Fabric.
Otvorte alebo vytvorte poznámkový blok. Ďalšie informácie nájdete v téme Ako používať poznámkové bloky služby Microsoft Fabric.
Ak chcete zmeniť primárny jazyk, nastavte možnosť jazyka na SparkR (R).
Pripojte svoj notebook k jazeru. Na ľavej strane vyberte položku Pridať a pridajte existujúci lakehouse alebo vytvorte lakehouse.
Pripojenie sparklyr ku klastru Synapse Spark
Na vytvorenie spark_connect()
pripojenia v sparklyr
použite nasledujúcu metódu pripojenia. Podporujeme novú metódu pripojenia s názvom synapse
, ktorá umožňuje pripojiť sa k existujúcej relácii služby Spark. Tým sa výrazne znižuje čas spustenia relácie sparklyr
. Okrem toho sme prispeli touto metódou pripojenia k open source sparklyr projektu. S method = "synapse"
môžete v rovnakej relácii použiť sparklyr
aj SparkR
a jednoducho medzi nimi zdieľať údaje.
# 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)
Použitie iskru na čítanie údajov
Nová relácia Spark neobsahuje žiadne údaje. Prvým krokom je buď načítanie údajov do pamäte relácie služby Spark, alebo nasniekanie služby Spark na umiestnenie údajov, aby mohla pristupovať k údajom na požiadanie.
# 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)
Pomocou sparklyr
môžete tiež write
a read
údajov zo súboru Lakehouse pomocou cesty ABFS. Ak chcete čítať a zapisovať do Lakehouse, najprv ju pridajte do svojej relácie. Na ľavej strane notebooku vyberte Pridať pridať existujúce Lakehouse alebo vytvoriť Lakehouse.
Ak chcete nájsť cestu ABFS, kliknite pravým tlačidlom myši na priečinok Files v lakehouse, potom vyberte Copy ABFS path. Prilepte cestu, ktorá má nahradiť abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
v tomto kóde:
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)
Používanie iskru na manipuláciu s údajmi
sparklyr
poskytuje viaceré metódy na spracovanie údajov v službe Spark pomocou:
- príkazy
dplyr
- SparkSQL
- Transformátory funkcií spark
Používanie dplyr
Na prípravu údajov v službe Spark môžete použiť známe príkazy dplyr
. Príkazy sa spúšťajú v službe Spark, takže medzi jazykom R a Spark nie sú žiadne nepotrebné prenosy údajov.
Kliknutím na Manipulácia s údajmi so dplyr
zobrazíte ďalšiu dokumentáciu o používaní dplyr so službou 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
a dplyr
preložiť príkazy R do spark SQL pre nás. Výsledný dotaz sa zobrazí pomocou show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Použiť SQL
Rovnako je možné vykonať dotazy SQL priamo na tabuľky v rámci klastra Spark. Objekt spark_connection()
implementuje rozhranie DBI pre službu Spark, takže môžete použiť dbGetQuery()
na spustenie SQL a vrátenie výsledku ako údajový rámec R:
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
Použitie funkcií Transformers
Obe predchádzajúce metódy závisia od príkazov SQL. Služba Spark poskytuje príkazy, vďaka ktorým je niektorá transformácia údajov pohodlnejšia a bez použitia SQL.
Príkaz ft_binarizer()
napríklad zjednodušuje vytvorenie nového stĺpca, ktorý označuje, či hodnota iného stĺpca prekročí určitú prahovú hodnotu.
Úplný zoznam transformátorov funkcií spark, ktoré sú k dispozícii prostredníctvom sparklyr
na Reference -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Zdieľanie údajov medzi sparklyr
a SparkR
Keď pripojiť sparklyr
k klastru synapse spark pomocou method = "synapse"
, môžete v rovnakej relácii použiť sparklyr
aj SparkR
a jednoducho medzi nimi zdieľať údaje. V sparklyr
môžete vytvoriť tabuľku spark a prečítať ju z 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)
Strojové učenie
Tu je príklad, kde používame ml_linear_regression()
na prispôsobenie lineárneho regresného modelu. Použijeme vstavanú mtcars
množinu údajov a zistíme, či na základe jeho hmotnosti (mpg
) vieme predpovedať spotrebu paliva v aute (wt
) a počet fliaš, ktoré motor obsahuje (cyl
). V každom prípade predpokladáme, že vzťah medzi mpg
a každou z našich funkcií je lineárny.
Generovanie testovacích a tréningových množín údajov
Na trénovanie modelu použite rozdelenie 70% a 30% na testovanie modelu. Pri prehrávaní s týmto pomerom sa tieto modely líšia.
# 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énovať model
Trénujte logistickú regresný model.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Teraz použite summary()
a zistite viac o kvalite nášho modelu a štatistickej významnosti každého z prediktorov.
summary(fit)
Použitie modelu
Model môžete použiť na testovaciu množinu údajov zavolaním ml_predict()
.
pred <- ml_predict(fit, partitions$test)
head(pred)
Zoznam modelov strojového učenia platformy Spark dostupných prostredníctvom sparklyr nájdete v časti Referenčné informácie –
Odpojenie od klastra Spark
Môžete zavolať spark_disconnect()
alebo vybrať tlačidlo Ukončiť reláciu v hornej časti notebooku na páse s nástrojmi ukončiť reláciu Spark.
spark_disconnect(sc)
Súvisiaci obsah
Ďalšie informácie o funkciách jazyka R:
- Ako používať SparkR
- Používanie Tidyverse
- spravovania knižnice R
- vytváranie vizualizácií v jazyku R
- Kurz: predpoveď ceny avokáda
- Kurz: predpoveď predikcie meškania letu