Sdílet prostřednictvím


Použijte sparklyr

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

sparklyr se používá spolu s dalšími balíčky tidyverse, jako jsou dplyr. Microsoft Fabric distribuuje nejnovější stabilní verzi sparklyr a tidyverse s každou verzí prostředí 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 Jak používat poznámkové bloky 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 a přidejte existující jezero nebo vytvořte jezero.

Připojení sparklyru ke clusteru Synapse Spark

Pomocí následující metody připojení v spark_connect() vytvořte připojení sparklyr. Podporujeme novou metodu připojení s názvem synapse, která umožňuje připojení k existující relaci Sparku. Výrazně zkracuje dobu spuštění relace sparklyr. Kromě toho jsme touto metodou připojení přispěli k open-source projektu sparklyr . S method = "synapse"můžete používat sparklyr 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í sparklyrmůžete také write a read data ze souboru Lakehouse pomocí cesty ABFS. Pokud chcete číst a zapisovat do Lakehouse, nejprve jej přidejte do své relace. Na levé straně poznámkového bloku vyberte Přidat pro přidání existujícího Lakehouse nebo vytvoření nového.

Chcete-li najít cestu ABFS, klikněte pravým tlačítkem myši na složku Files 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 více metod zpracování dat uvnitř Sparku pomocí:

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

Použijte dplyr

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

Kliknutím na Manipulace s daty pomocí dplyr zobrazíte další dokumentaci k použití nástroje dplyr 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 nám přeloží příkazy R do Spark SQL. Pokud chcete zobrazit výsledný dotaz, 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ácení výsledku jako datového rámce 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 ft_binarizer() zjednodušuje vytvoření nového sloupce, který označuje, jestli hodnota jiného sloupce překračuje určitou prahovou hodnotu.

Úplný seznam transformátorů funkcí pro Spark, které jsou dostupné prostřednictvím sparklyr z Reference -FT.

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

Sdílení dat mezi sparklyr a SparkR

Když připojíte sparklyr ke clusteru Synapse Spark pomocí method = "synapse", můžete použít sparklyr i SparkR ve stejné relaci a snadno sdílet data mezi nimi. Tabulku Sparku můžete vytvořit v sparklyr a přečíst ji 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čení

Tady je příklad, kdy používáme ml_linear_regression() k přizpůsobení modelu lineární regrese. Použijeme integrovanou datovou sadu mtcars a zjistíme, jestli můžeme na základě hmotnosti (wt) předpovědět spotřebu paliva (mpg) a počtu válců, které motor obsahuje (cyl). V každém případě předpokládáme, že vztah mezi mpg a každou z našich vlastností je lineární.

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

Pro trénování modelu použijte rozdělení 70% a pro testování 30%. 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 pomocí summary() dozvíte o kvalitě našeho modelu a statistické významnosti jednotlivých prediktorů.

summary(fit)

Použijte model

Model můžete použít u testovací datové sady 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 Reference – ML

Odpojení od clusteru Spark

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

spark_disconnect(sc)

Další informace o funkcích jazyka R: