Zdieľať cez


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.

    Snímka obrazovky ponuky prepínača prostredí zobrazujúca, kde vybrať položku Dátová veda.

  • 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 sparklyrmôž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)

Ďalšie informácie o funkciách jazyka R: