Použití sparklyru

sparklyr je rozhraní R pro Apache Spark. Poskytuje mechanismus pro interakci se Sparkem pomocí známých rozhraní jazyka R. Minigrafyr můžete použít prostřednictvím definic dávkových úloh Sparku nebo s interaktivními poznámkovými bloky Microsoft Fabric.

sparklyr se používá spolu s dalšími balíčky tidyverse , jako je dplyr. Microsoft Fabric distribuuje nejnovější stabilní verzi sparklyr a tidyverse s každou verzí modulu runtime. Můžete je importovat a začít používat rozhraní API.

Požadavky

  • Otevřete nebo vytvořte poznámkový blok. Postup najdete v tématu Použití poznámkových bloků Microsoft Fabric.

  • Nastavte možnost jazyka na SparkR (R) a změňte primární jazyk.

  • Připojte poznámkový blok k jezeru. Na levé straně vyberte Přidat, pokud chcete přidat existující jezerní dům nebo vytvořit jezero.

Připojení sparklyr do clusteru Synapse Spark

K navázání připojení použijte následující metodu spark_connect()sparklyr připojení. Podporujeme novou metodu připojení s názvem synapse, která umožňuje připojit se k existující relaci Sparku. Výrazně zkracuje sparklyr čas spuštění relace. Kromě toho jsme přispěli touto metodou připojení k opensourcovém projektu sparklyr. Díky method = "synapse"tomu můžete používat obě sparklyr relace i SparkR ve stejné relaci a snadno sdílet data mezi nimi.

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

Čtení dat pomocí sparklyru

Nová relace Sparku neobsahuje žádná data. Prvním krokem je načtení dat do paměti relace Sparku nebo nasměrování Sparku na umístění dat, aby k datům na vyžádání mělo přístup.

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

Pomocí sparklyr, můžete také write a read data ze souboru Lakehouse pomocí cesty ABFS. Pokud chcete číst a zapisovat do Lakehouse, nejprve ho přidejte do relace. Na levé straně poznámkového bloku vyberte Přidat a přidejte existující lakehouse nebo vytvořte Lakehouse.

Pokud chcete najít cestu ABFS, klikněte pravým tlačítkem na složku Soubory ve vašem Lakehouse a pak vyberte Kopírovat cestu ABFS. Vložte cestu, kterou chcete nahradit abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files v tomto kódu:

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žití sparklyru k manipulaci s daty

sparklyr poskytuje několik metod pro zpracování dat uvnitř Sparku pomocí:

  • dplyr Příkazy
  • SparkSQL
  • Transformátory funkcí Sparku

Použití dplyr

K přípravě dat uvnitř Sparku můžete použít známé dplyr příkazy. Příkazy běží uvnitř Sparku, takže mezi R a Sparkem nejsou žádné zbytečné přenosy dat.

Kliknutím na položku Manipulace s daty dplyr zobrazíte další dokumentaci k použití dplyru se Sparkem.

# 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 přeložte příkazy R do Spark SQL. K zobrazení výsledného dotazu použijte show_query():

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

Použití SQL

Je také možné spouštět dotazy SQL přímo na tabulky v clusteru Spark. Objekt spark_connection() implementuje rozhraní DBI pro Spark, takže můžete použít dbGetQuery() ke spuštění SQL a vrátit výsledek jako datový rámec R:

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

Použití transformátorů funkcí

Obě předchozí metody spoléhají na příkazy SQL. Spark poskytuje příkazy, které usnadňují transformaci dat a bez použití SQL.

Například příkaz zjednodušuje vytvoření nového sloupce, který označuje, ft_binarizer() jestli hodnota jiného sloupce překračuje určitou prahovou hodnotu.

Úplný seznam transformátorů funkcí Sparku, které jsou k dispozici prostřednictvím sparklyrreference -FT.

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

Sdílení dat mezi sparklyr a SparkR

Když se připojíte sparklyr ke clusteru Synapse Spark pomocí method = "synapse", můžete použít obě SparkRsparklyr a ve stejné relaci a snadno sdílet data mezi nimi. Tabulku Sparku sparklyr můžete vytvořit a přečíst z SparkRní .

# 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čení

Tady je příklad, ve kterém se používá ml_linear_regression() k přizpůsobení lineárního regresního modelu. Použijeme integrovanou mtcars datovou sadu a zjistíme, jestli můžeme na základě hmotnosti () a počtu válců, které motor obsahuje (cyl), předpovědět spotřebu paliva (mpgwt). V každém případě předpokládáme, že vztah mezi mpg jednotlivými funkcemi je lineární.

Generování testovacích a trénovacích datových sad

Pro trénování použijte rozdělení, 70 % pro trénování a 30 % pro testování modelu. Hra s tímto poměrem vede k různým modelům.

# 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énování modelu

Trénujte model logistické regrese.

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

fit

Teď se můžete summary() dozvědět více o kvalitě našeho modelu a statistické významnosti každého z našich prediktorů.

summary(fit)

Použití modelu

Model můžete použít pro testovací datovou sadu voláním ml_predict().

pred <- ml_predict(fit, partitions$test)

head(pred)

Seznam modelů Spark ML, které jsou k dispozici prostřednictvím sparklyr, najdete v referenčních informacích – ML

Odpojení od clusteru Spark

Můžete volat spark_disconnect() nebo vybrat tlačítko Zastavit relaci v horní části pásu karet poznámkového bloku ukončit relaci Sparku.

spark_disconnect(sc)

Další informace o funkcích jazyka R: