Usar o sparklyr
sparklyr é uma interface R para Apache Spark. Ele fornece um mecanismo para interagir com o Spark usando interfaces R familiares. Você pode usar o sparklyr por meio de definições de trabalho em lote 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 cadastre-se para uma avaliação gratuita do Microsoft Fabric.
Entre no Microsoft Fabric.
Use o alternador de experiência no lado inferior esquerdo da página inicial para alternar para o Fabric.
Abra ou crie um bloco de anotações. Para saber como, confira Como usar notebooks do Microsoft Fabric.
Defina a opção de idioma para SparkR (R) para alterar o idioma primário.
Anexe seu notebook a um lakehouse. No lado esquerdo, selecione Adicionar para adicionar um lakehouse existente ou para criar um.
Conectar o sparklyr ao cluster 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 do Spark existente. 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 código aberto . 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 leitura de 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 encontrar o caminho do ABFS, clique com o botão direito do mouse na pasta Arquivos no 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
Usar dplyr
Você pode usar comandos dplyr
familiares 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 R para Spark SQL para nós. 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 em um cluster Spark. O objeto spark_connection()
implementa uma interface de DBI para Spark, para que você possa usar dbGetQuery()
para executar o SQL e retornar o resultado como um quadro de dados 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
Aqui está um exemplo em que usamos ml_linear_regression()
para ajustar um modelo de regressão linear. Usamos o conjunto de dados mtcars
interno e vemos se podemos prever o consumo de combustível (mpg
) de um carro com base em seu peso (wt
) e no número de cilindros que o motor contém (cyl
). Presumimos, em cada caso, que a relação entre mpg
e cada um de nossos recursos seja 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 saber 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 Reference – 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: