Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La risorsa sparklyr del linguaggio R funge da interfaccia per Apache Spark. La risorsa sparklr fornisce un meccanismo per interagire con Spark con interfacce R familiari. Usare sparklyr tramite definizioni di processi batch Spark o con notebook interattivi di Microsoft Fabric.
sparklyr
viene usato con altri pacchetti tidyverse , ad esempio dplyr. Microsoft Fabric distribuisce la versione stabile più recente di sparklyr e tidyverse con ogni versione di runtime. È possibile importare queste risorse e iniziare a usare l'API.
Prerequisiti
Ottenere una sottoscrizione di Microsoft Fabric. In alternativa, iscriversi per ottenere una versione di valutazione di Microsoft Fabric gratuita.
Accedere a Microsoft Fabric.
Usare il selettore di esperienza in basso a sinistra nella home page per passare a Fabric.
Aprire o creare un notebook. Per scoprire come, consultare Come usare i notebook di Microsoft Fabric.
Impostare l'opzione del linguaggio su SparkR (R) per modificare il linguaggio principale.
Collega il notebook a un lakehouse. Sul lato sinistro, selezionare Aggiungi per aggiungere un lakehouse esistente o per crearne uno nuovo.
Connettere sparklyr al cluster Synapse Spark
Il spark_connect()
metodo di connessione della funzione stabilisce una sparklyr
connessione. La funzione compila un nuovo metodo di connessione denominato synapse
, che si connette a una sessione Spark esistente. Riduce notevolmente il tempo di avvio della sessione sparklyr
. Questo metodo di connessione è disponibile nel progetto sparklyr open source. Con method = "synapse"
è possibile usare sia che sparklyr
SparkR
nella stessa sessione e condividere facilmente i dati tra di essi. L'esempio di codice della cella del notebook seguente usa la funzione spark_connect()
.
# 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)
Usare sparklyr per leggere i dati
Una nuova sessione Spark non contiene dati. È quindi necessario caricare i dati nella memoria della sessione Spark oppure puntare Spark al percorso dei dati in modo che la sessione possa accedere ai dati su richiesta:
# 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)
Con sparklyr
, è anche possibile write
e read
i dati da un file Lakehouse usando un valore di percorso ABFS. Per leggere e scrivere in una Lakehouse, per prima cosa aggiungere la Lakehouse alla sessione. Sul lato sinistro del notebook selezionare Aggiungi per aggiungere un lakehouse esistente. Inoltre, è possibile creare una Lakehouse.
Per trovare il percorso ABFS, selezionare la cartella File in Lakehouse e selezionare Copia percorso ABFS. Incolla il tuo percorso per sostituire abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
nel seguente esempio di codice:
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)
Utilizzare sparklyr per manipolare i dati
sparklyr
offre diversi modi per elaborare i dati all'interno di Spark, con:
- Comandi di
dplyr
- SparkSQL
- Trasformatori di funzionalità di Spark
Utilizzare dplyr
.
È possibile usare comandi familiari dplyr
per preparare i dati all'interno di Spark. I comandi vengono eseguiti all'interno di Spark, impedendo trasferimenti di dati non necessari tra R e 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
La risorsa Manipolare i dati con dplyr
offre ulteriori informazioni sull'uso di dplyr con Spark.
sparklyr
e dplyr
traducono i comandi R in Spark SQL. Usare show_query()
per visualizzare la query risultante:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Utilizzare SQL
È anche possibile eseguire query SQL direttamente su tabelle all'interno di un cluster Spark. L'oggetto spark_connection()
implementa un'interfaccia DBI per Spark, consentendo di usare dbGetQuery()
per eseguire SQL e restituire il risultato come frame di dati R:
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
Usare i Trasformatori di funzionalità
Entrambi i metodi precedenti si basano su istruzioni SQL. Spark offre comandi che semplificano alcune trasformazioni dei dati, senza l'uso di SQL. Ad esempio, il ft_binarizer()
comando semplifica la creazione di una nuova colonna che indica se un valore in un'altra colonna supera una determinata soglia:
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
La risorsa Reference -FT offre un elenco completo dei trasformatori di funzionalità Spark disponibili tramite sparklyr
.
Condividere dati tra sparklyr
e SparkR
Quando ti connetti sparklyr
al cluster Synapse Spark con method = "synapse"
, sia sparklyr
che SparkR
diventano disponibili nella stessa sessione e possono condividere facilmente i dati fra loro. È possibile creare una tabella Spark in sparklyr
e leggerla da 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)
Apprendimento automatico
Nell'esempio seguente viene ml_linear_regression()
usato per adattare un modello di regressione lineare. Il modello usa il set di dati predefinito mtcars
per tentare di stimare il consumo di carburante (mpg
) di un'auto in base al peso (wt
) dell'auto e al numero di cilindri (cyl
) del motore dell'auto. Tutti i casi qui presuppongono una relazione lineare tra mpg
e ognuna delle nostre caratteristiche.
Generare set di dati di testing e di training
Usare una divisione del 70%% per l'addestramento e del 30%% per testare il modello. Le modifiche apportate a questo rapporto portano a modelli diversi:
# 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)
Eseguire l'addestramento del modello
Addestrare il modello di regressione logistica.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Usare summary()
per altre informazioni sulla qualità del modello e sul significato statistico di ognuno dei predittori:
summary(fit)
Usare il modello
Chiamare ml_predict()
per applicare il modello al set di dati di test:
pred <- ml_predict(fit, partitions$test)
head(pred)
Per un elenco dei modelli di Spark ML disponibili tramite Sparklyr, vedere Informazioni di riferimento - Ml .
Disconnetti dal cluster Spark
Chiamare spark_disconnect()
o selezionare il pulsante Arresta sessione nella parte superiore della barra multifunzione del notebook per terminare la sessione spark:
spark_disconnect(sc)
Contenuto correlato
Altre informazioni sulle funzionalità R: