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
Získejte předplatné Microsoft Fabric. Nebo si zaregistrujte bezplatnou zkušební verzi Microsoft Fabric.
Přihlaste se k Microsoft Fabric.
Pomocí přepínače prostředí v levém dolním rohu domovské stránky přepněte na Fabric.
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í sparklyr
můž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)
Související obsah
Další informace o funkcích jazyka R: