Udostępnij za pośrednictwem


Korzystanie z interfejsu 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. Interfejs sparklyr można używać za pomocą definicji zadań wsadowych platformy Spark lub interaktywnych notesów usługi Microsoft Fabric.

sparklyr jest używany wraz z innymi uporządkowanymi pakietami, takimi jak dplyr. Usługa Microsoft Fabric dystrybuuje najnowszą stabilną wersję sparklyr i tidyverse przy każdym wydaniu środowiska uruchomieniowego. Możesz je zaimportować i rozpocząć korzystanie z interfejsu API.

Wymagania wstępne

  • Uzyskaj subskrypcję usługi Microsoft Fabric. Możesz też utworzyć konto bezpłatnej wersji próbnej usługi Microsoft Fabric.

  • Zaloguj się do usługi Microsoft Fabric.

  • Użyj przełącznika środowiska po lewej stronie głównej, aby przełączyć się na środowisko usługi Synapse Nauka o danych.

    Screenshot of the experience switcher menu, showing where to select Data Science.

  • Otwórz lub utwórz notes. Aby dowiedzieć się, jak używać notesów usługi Microsoft Fabric, zobacz Jak używać notesów usługi Microsoft Fabric.

  • Ustaw opcję języka na SparkR (R), aby zmienić język podstawowy.

  • Dołącz notes do magazynu lakehouse. Po lewej stronie wybierz pozycję Dodaj , aby dodać istniejący obiekt lakehouse lub utworzyć jezioro.

Połączenie sparklyr do klastra Usługi Synapse Spark

Użyj następującej metody połączenia w programie , spark_connect() aby nawiązać sparklyr połączenie. Obsługujemy nową metodę połączenia o nazwie synapse, która umożliwia nawiązanie połączenia z istniejącą sesją platformy Spark. Znacznie skraca sparklyr czas rozpoczęcia sesji. Ponadto współtworzyliśmy tę metodę połączenia z projektem sparklyr typu open source. Za pomocą method = "synapse"programu można używać zarówno tych samych sesji, sparklyr jak i SparkR w tej samej sesji, a także łatwo udostępniać między nimi dane.

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

Odczytywanie danych za pomocą interfejsu sparklyr

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ą polecenia sparklyrmożna również write używać pliku Lakehouse i read danych 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ą usługę Lakehouse lub utworzyć usługę Lakehouse.

Aby znaleźć ścieżkę ABFS, kliknij prawym przyciskiem myszy folder Files w usłudze Lakehouse, a następnie wybierz pozycję Kopiuj ścieżkę ABFS. Wklej ś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

Korzystanie z polecenia dplyr

Możesz użyć znanych dplyr poleceń, aby przygotować dane wewnątrz platformy Spark. Polecenia są uruchamiane wewnątrz platformy Spark, więc nie ma niepotrzebnych transferów danych między językiem R i platformą Spark.

Kliknij pozycję Manipulowanie danymi za pomocą, 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 przetłumacz polecenia języka R na usługę Spark SQL. Aby wyświetlić wynikowe zapytanie, użyj polecenia 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() polecenia w celu 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 ft_binarizer() polecenie upraszcza tworzenie nowej kolumny, która wskazuje, czy wartość innej kolumny przekracza określony próg.

Pełną listę transformatorów funkcji platformy Spark można znaleźć w temacie sparklyr Reference -FT (Dokumentacja -FT).

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

Udostępnianie danych między sparklyr i SparkR

Podczas nawiązywania połączenia z sparklyr klastrem platformy Synapse Spark za pomocą method = "synapse"polecenia można używać zarówno w sparklyr tej samej sesji, jak i SparkR w prosty sposób udostępniać między nimi dane. Możesz utworzyć tabelę platformy Spark w pliku sparklyr i odczytać ją z witryny 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 służymy ml_linear_regression() do dopasowania modelu regresji liniowej. Używamy wbudowanego mtcars zestawu danych i sprawdzamy, czy możemy przewidzieć zużycie paliwa samochodu () na podstawie wagi (mpgwt) oraz liczby cylindrów, które zawiera silnik (cyl). W każdym przypadku zakładamy, że relacja między poszczególnymi funkcjami mpg jest liniowa.

Generowanie zestawów danych testowania i trenowania

Użyj podziału, 70% na potrzeby trenowania i 30% na potrzeby 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)

Szkolenie modelu

Trenowanie modelu regresji logistycznej.

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

fit

Teraz użyj summary() polecenia , aby dowiedzieć się 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 polecenie ml_predict().

pred <- ml_predict(fit, partitions$test)

head(pred)

Aby uzyskać listę modeli spark ML dostępnych za pośrednictwem interfejsu sparklyr, odwiedź stronę Dokumentacja — ML

Odłączanie od klastra Spark

Możesz wywołać spark_disconnect() lub wybrać przycisk Zatrzymaj sesję 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: