Usar o sparklyr
O sparklyr é uma interface do R para Apache Spark. Ele fornece um mecanismo para interagir com o Spark usando interfaces do R familiares. Você pode usar o sparklyr por meio de definições de trabalho em lotes do Spark ou com notebooks interativos do Microsoft Fabric.
O sparklyr
geralmente é usado com outros pacotes tidyverse como o dplyr. O Microsoft Fabric distribui a versão estável mais recente do sparklyr e tidyverse a cada lançamento do runtime. Você pode importá-los e começar a usar a API.
Pré-requisitos
Obtenha uma assinatura do Microsoft Fabric. Ou, inscreva-se para uma avaliação gratuita do Microsoft Fabric.
Entre no Microsoft Fabric.
Use o seletor de experiência no lado esquerdo da sua página inicial para alternar para a experiência de Ciência de Dados do Synapse.
Abrir ou criar um notebook. Para saber como, consulte Como usar notebooks do Microsoft Fabric.
Defina a opção de idioma para SparkR (R) para mudar o idioma principal.
Anexe seu bloco de anotações a um lakehouse. No lado esquerdo, selecione Adicionar para adicionar um lakehouse existente ou para criar um.
Conectar o sparklyr ao cluster do Spark do Synapse
Use o método de conexão a seguir em spark_connect()
para estabelecer uma conexão sparklyr
. Damos suporte a um novo método de conexão chamado synapse
, que permite que você se conecte a uma sessão existente do Spark. Isso reduz consideravelmente a hora de início da sessão sparklyr
. Além disso, contribuímos com esse método de conexão para o projeto sparklyr de software livre. Com method = "synapse"
, você pode usar sparklyr
e SparkR
na mesma sessão e compartilhar facilmente os dados entre eles.
# 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)
Usar o sparklyr para ler dados
Uma nova sessão do Spark não contém dados. A primeira etapa é carregar dados na memória da sessão do Spark ou apontar o Spark para o local dos dados para que ele possa acessar os dados sob demanda.
# 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
, você também pode write
e read
dados de um arquivo do lakehouse usando o caminho do ABFS. Para ler e gravar em um Lakehouse, primeiro adicione-o à sua sessão. No lado esquerdo, selecione Adicionar para adicionar um lakehouse existente ou criar um.
Para localizar o caminho do ABFS, clique com o botão direito do mouse na pasta Arquivos em seu lakehouse e selecione Copiar caminho do ABFS. Cole seu caminho para substituir abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
neste código:
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)
Usar o sparklyr para manipular dados
sparklyr
fornece vários métodos para processar dados dentro do Spark usando:
- Comandos de
dplyr
- SparkSQL
- Transformadores de recursos do Spark
Use dplyr
.
Você pode usar comandos familiares de dplyr
para preparar dados dentro do Spark. Os comandos são executados dentro do Spark, portanto, não há transferências de dados desnecessárias entre o R e o Spark.
Clique em Manipular dados com dplyr
para ver a documentação extra sobre como usar o dplyr com o 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
traduzem os comandos do R no SQL do Spark. Para ver a consulta resultante, use show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Usar SQL
Também é possível executar consultas SQL diretamente em tabelas dentro de um cluster do Spark. O spark_connection()
objeto implementa uma interface DBI para Spark, para que você possa usar dbGetQuery()
para executar o SQL e retornar o resultado como um quadro de dados do R:
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
Usar transformadores de recursos
Ambos os métodos anteriores dependem de instruções SQL. O Spark fornece comandos que tornam algumas transformações de dados mais convenientes e sem o uso do SQL.
Por exemplo, o comando ft_binarizer()
simplifica a criação de uma nova coluna que indica se o valor de outra coluna está acima de um determinado limite.
Você pode encontrar a lista completa dos Transformadores de Recursos do Spark disponíveis por meio de sparklyr
da Referência -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Compartilhar dados entre sparklyr
e SparkR
Quando você conectar o sparklyr
ao cluster do Synapse Spark com method = "synapse"
, você pode usar sparklyr
e SparkR
na mesma sessão e compartilhar facilmente os dados entre eles. Você pode criar uma tabela do spark em sparklyr
e ler no 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)
Aprendizado de máquina
Este é um exemplo em que usamos ml_linear_regression()
para ajustar um modelo de regressão linear. Usamos o conjunto de dados interno mtcars
e vemos se podemos prever o consumo de combustível de um carro (mpg
) com base em seu peso (wt
) e o número de cilindros que o motor contém (cyl
). Assumimos em cada caso que a relação entre mpg
e cada um de nossos recursos é linear.
Gerar conjuntos de dados de teste e treinamento
Use uma divisão, 70% para treinamento e 30% para testar o modelo. Jogar com essa proporção resulta em modelos diferentes.
# 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)
Treinar o modelo
Treine o modelo de regressão logística.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
Agora use summary()
para aprender um pouco mais sobre a qualidade do nosso modelo e a significância estatística de cada um de nossos preditores.
summary(fit)
Usar o modelo
Você pode aplicar o modelo no conjunto de dados de teste chamando ml_predict()
.
pred <- ml_predict(fit, partitions$test)
head(pred)
Para obter uma lista de modelos do Spark ML disponíveis por meio do Sparklyr, visite Referência – ML
Desconectar-se do cluster Spark
Você pode chamar spark_disconnect()
ou selecionar o botão Parar sessão na parte superior da faixa de opções do bloco de anotações para encerrar a sessão do Spark.
spark_disconnect(sc)
Conteúdo relacionado
Saiba mais sobre as funcionalidades do R: