Użyj sparklyr
sparklyr to interfejs języka R dla platformy Apache Spark. Zapewnia mechanizm interakcji z platformą Spark przy użyciu znanych interfejsów języka R. Możesz używać sparklyr poprzez definicje zadań wsadowych Spark lub interaktywne notatniki Microsoft Fabric.
sparklyr
jest używany wraz z innymi pakietami tidyverse, takimi jak dplyr. Microsoft Fabric dystrybuuje najnowszą stabilną wersję sparklyr oraz tidyverse wraz z każdą nową wersją środowiska uruchomieniowego. Możesz je zaimportować i rozpocząć korzystanie z interfejsu API.
Warunki wstępne
Pobierz subskrypcję usługi Microsoft Fabric . Możesz też utworzyć bezpłatne konto wersji próbnej usługi Microsoft Fabric.
Zaloguj się do usługi Microsoft Fabric.
Użyj przełącznika doświadczenia w lewym dolnym rogu strony głównej, aby przełączyć się na Fabric.
Otwórz lub utwórz notatnik. Aby dowiedzieć się, jak to zrobić, zobacz Jak używać notesów Microsoft Fabric.
Ustaw opcję języka na SparkR (R), aby zmienić język podstawowy.
Dołącz swój notebook do lakehouse. Po lewej stronie wybierz Dodaj, aby dodać istniejący lakehouse lub utworzyć nowy lakehouse.
Połączenie sparklyr z klastrem Synapse Spark
Użyj następującej metody połączenia w spark_connect()
, aby nawiązać połączenie sparklyr
. Obsługujemy nową metodę połączenia o nazwie synapse
, która umożliwia nawiązanie połączenia z istniejącą sesją platformy Spark. Znacznie zmniejsza czas rozpoczęcia sesji sparklyr
. Ponadto współtworzyliśmy tę metodę połączenia z projektem sparklyr typu open source . Dzięki method = "synapse"
możesz korzystać zarówno z sparklyr
, jak i SparkR
w tej samej sesji, a także łatwo wymieniać dane między 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)
Użyj sparklyr do odczytywania danych
Nowa sesja platformy Spark nie zawiera żadnych danych. Pierwszym krokiem jest załadowanie danych do pamięci sesji platformy Spark lub wskazanie platformy Spark lokalizacji danych w celu uzyskania dostępu do danych na żądanie.
# 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)
Za pomocą sparklyr
można również dane write
i read
z pliku Lakehouse przy użyciu ścieżki ABFS. Aby odczytać i zapisać w usłudze Lakehouse, najpierw dodaj go do sesji. Po lewej stronie notesu wybierz pozycję Dodaj, aby dodać istniejącą Lakehouse lub utworzyć nową Lakehouse.
Aby znaleźć ścieżkę ABFS, kliknij prawym przyciskiem myszy folder Files w Lakehouse, a następnie wybierz Skopiuj ścieżkę ABFS. Wklej swoją ścieżkę, aby zastąpić abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
w tym kodzie.
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)
Używanie interfejsu sparklyr do manipulowania danymi
sparklyr
udostępnia wiele metod przetwarzania danych wewnątrz platformy Spark przy użyciu:
-
dplyr
polecenia - SparkSQL
- Transformatory funkcji platformy Spark
Użyj dplyr
Aby przygotować dane wewnątrz platformy Spark, możesz użyć znanych poleceń dplyr
. Polecenia są uruchamiane wewnątrz platformy Spark, więc nie ma niepotrzebnych transferów danych między językiem R i platformą Spark.
Kliknij Manipulowanie danymi przy użyciu dplyr
, aby wyświetlić dodatkową dokumentację dotyczącą korzystania z programu dplyr z platformą 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
i dplyr
tłumaczą polecenia języka R na Spark SQL dla nas. Aby wyświetlić wynikowe zapytanie, użyj show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Korzystanie z bazy danych SQL
Istnieje również możliwość wykonywania zapytań SQL bezpośrednio względem tabel w klastrze Spark. Obiekt spark_connection()
implementuje interfejs DBI dla platformy Spark, dzięki czemu można użyć dbGetQuery()
do wykonania kodu SQL i zwrócenia wyniku jako ramki danych języka R:
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
Korzystanie z funkcji transformers
Obie poprzednie metody bazują na instrukcjach SQL. Platforma Spark udostępnia polecenia, które sprawiają, że niektóre przekształcenia danych są wygodniejsze i nie korzystają z języka SQL.
Na przykład polecenie ft_binarizer()
upraszcza tworzenie nowej kolumny, która wskazuje, czy wartość innej kolumny przekracza określony próg.
Pełna lista transformatorów cech Spark dostępnych poprzez sparklyr
znajduje się w Reference-FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Udostępnianie danych między sparklyr
a SparkR
Podczas nawiązywania połączenia sparklyr
z klastrem Synapse Spark za pomocą method = "synapse"
można użyć zarówno sparklyr
, oraz SparkR
w tej samej sesji i łatwo udostępniać dane między nimi. Możesz utworzyć tabelę Spark w sparklyr
i odczytać ją 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)
Uczenie maszynowe
Oto przykład, w którym używamy ml_linear_regression()
do dopasowania modelu regresji liniowej. Używamy wbudowanego zestawu danych mtcars
i sprawdzamy, czy możemy przewidzieć zużycie paliwa samochodu (mpg
) na podstawie wagi (wt
) oraz liczby cylindrów, które zawiera silnik (cyl
). W każdym przypadku zakładamy, że relacja między mpg
a każdą z naszych funkcji jest liniowa.
Generowanie zestawów danych testowania i trenowania
Użyj podziału 70% do trenowania i 30% do testowania modelu. Gra z tym współczynnikiem powoduje różne modele.
# 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)
Trenowanie modelu
Trenowanie modelu regresji logistycznej.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Teraz użyj summary()
, aby dowiedzieć się nieco więcej na temat jakości naszego modelu i statystycznego znaczenia każdego z naszych predyktorów.
summary(fit)
Korzystanie z modelu
Model można zastosować w zestawie danych testowych, wywołując ml_predict()
.
pred <- ml_predict(fit, partitions$test)
head(pred)
Aby uzyskać listę modeli Spark ML dostępnych za pośrednictwem sparklyr, odwiedź stronę Reference - ML
Odłączanie od klastra Spark
Możesz wywołać spark_disconnect()
lub wybrać przycisk sesji Zatrzymaj w górnej części wstążki notesu, aby zakończyć sesję platformy Spark.
spark_disconnect(sc)
Powiązana zawartość
Dowiedz się więcej o funkcjach języka R:
- Jak używać SparkR
- Jak używać Tidyverse
- zarządzanie bibliotekami R
- Tworzenie wizualizacji języka R
- Samouczek : przewidywanie cen awokado
- Samouczek : przewidywanie opóźnień lotów