Usare sparklyr
sparklyr è un'interfaccia R per Apache Spark. Fornisce un meccanismo per interagire con Spark usando interfacce R familiari. È possibile usare sparklyr tramite definizioni di processi batch Spark o con notebook interattivi di Microsoft Fabric.
Importante
Microsoft Fabric è disponibile in anteprima.
sparklyr
viene usato insieme ad altri pacchetti tidyverse , ad esempio dplyr. Microsoft Fabric distribuisce la versione stabile più recente di sparklyr e tidyverse con ogni versione di runtime. È possibile importarli e iniziare a usare l'API.
Prerequisiti
Sottoscrizione Power BI Premium. Se non è disponibile, vedere Come acquistare Power BI Premium.
Un'area di lavoro di Power BI con capacità Premium assegnata. Se non si ha un'area di lavoro, seguire la procedura descritta in Creare un'area di lavoro per crearne una e assegnarla a una capacità Premium.
Accedere a Microsoft Fabric.
Aprire o creare un notebook. Per informazioni su come, vedere Come usare i notebook di Microsoft Fabric.
Modificare la lingua primaria impostando l'opzione linguasu SparkR (R).Change the primary language by setting the language option to SparkR (R).
Collegare il notebook a una lakehouse. Sul lato sinistro selezionare Aggiungi per aggiungere una lakehouse esistente o creare una lakehouse.
Connettere sparklyr al cluster Synapse Spark
Utilizzare il metodo di connessione seguente in spark_connect()
per stabilire una sparklyr
connessione.
# 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", config = config)
Usare sparklyr per leggere i dati
Una nuova sessione Spark non contiene dati. Il primo passaggio consiste nel caricare i dati nella memoria della sessione Spark o puntare Spark alla posizione dei dati in modo che 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)
Usando sparklyr
, è anche write
possibile e read
dati da un file Lakehouse usando il percorso ABFS. Per leggere e scrivere in un Lakehouse, aggiungerlo prima alla sessione. Sul lato sinistro del notebook selezionare Aggiungi per aggiungere una lakehouse esistente o creare una lakehouse.
Per trovare il percorso ABFS, fare clic con il pulsante destro del mouse sulla cartella File in Lakehouse, quindi scegliere Copia percorso ABFS. Incollare il percorso da sostituire abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
nel codice seguente:
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)
Usare sparklyr per modificare i dati
sparklyr
fornisce più metodi per elaborare i dati all'interno di Spark usando:
- Comandi di
dplyr
- SparkSQL
- Trasformatori di funzionalità di Spark
Utilizzare dplyr
.
È possibile usare comandi noti dplyr
per preparare i dati all'interno di Spark. I comandi vengono eseguiti all'interno di Spark, quindi non ci sono trasferimenti di dati non necessari tra R e Spark.
Fare clic su Modifica dei dati con dplyr
per visualizzare la documentazione aggiuntiva sull'uso di dplyr con 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
e dplyr
convertire automaticamente i comandi R in Spark SQL. Per visualizzare la query risultante, usare show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Usare 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, quindi è possibile 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 trasformatori di funzionalità
Entrambi i metodi precedenti si basano sulle istruzioni SQL. Spark offre comandi che semplificano la trasformazione dei dati e senza l'uso di SQL.
Ad esempio, il ft_binarizer()
comando semplifica la creazione di una nuova colonna che indica se il valore di un'altra colonna è superiore a una determinata soglia.
È possibile trovare l'elenco completo dei trasformatori di funzionalità Spark disponibili da sparklyr
Reference -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Machine Learning
Ecco un esempio in cui viene usato ml_linear_regression()
per adattare un modello di regressione lineare. Si usa il set di dati predefinito mtcars
e si verifica se è possibile stimare il consumo di carburante di un'automobile () in base al peso (mpg
wt
) e al numero di cilindri contenuti dal motore (cyl
). Si presuppone in ogni caso che la relazione tra mpg
e ognuna delle caratteristiche sia lineare.
Generare set di dati di test e training
Usare una suddivisione semplice, il 70% per il training e il 30% per il test del modello. La riproduzione di questo rapporto può comportare 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 il training del modello
Eseguire il training del modello di regressione logistica.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
summary()
Usare ora per ottenere altre informazioni sulla qualità del modello e sulla significatività statistica di ognuno dei predittori.
summary(fit)
Usare il modello
È possibile applicare il modello al set di dati di test chiamando ml_predict()
.
pred <- ml_predict(fit, partitions$test)
head(pred)
Per un elenco dei modelli di Spark ML disponibili tramite Sparklyr, vedere Informazioni di riferimento su ML
Disconnettersi dal cluster Spark
È possibile 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)
Passaggi successivi
Altre informazioni sulle funzionalità di R: