Udostępnij za pośrednictwem


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.

    Zrzut ekranu przedstawiający menu przełącznika doświadczeń, pokazujące, gdzie wybrać opcję Nauka o danych.

  • 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ą sparklyrmoż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)

Dowiedz się więcej o funkcjach języka R: