Partilhar via


Utilize sparklyr

O recurso sparklyr da linguagem R serve como uma interface para o Apache Spark. O recurso sparklr fornece um mecanismo para interagir com o Spark com interfaces R familiares. Use o sparklyr por meio de definições de trabalho em lote do Spark ou com blocos de anotações interativos do Microsoft Fabric.

sparklyr é usado com outros pacotes tidyverse - por exemplo, dplyr. Microsoft Fabric distribui a versão estável mais recente do sparklyr e do tidyverse em cada lançamento do runtime. Você pode importar esses recursos e começar a usar a API.

Pré-requisitos

  • Abra ou crie um bloco de notas. Para saber como, consulte Como usar blocos de anotações do Microsoft Fabric.

  • Defina a opção de idioma como SparkR (R) para alterar o idioma principal.

  • Ligue o seu bloco de notas a uma casa no lago. No lado esquerdo, selecione Adicionar para adicionar uma casa de lago existente ou para criar uma casa de lago.

Conecte o sparklyr ao cluster Synapse Spark

O método de conexão da função spark_connect() estabelece uma conexão sparklyr. A função cria um novo método de conexão chamado synapse, que se conecta a uma sessão Spark existente. Reduz drasticamente o tempo de início da sessão sparklyr. Este método de conexão está disponível no projeto sparklyr de código aberto. Com method = "synapse", você pode usar tanto sparklyr como SparkR na mesma sessão e partilhar dados facilmente entre eles. O exemplo de código de célula do bloco de anotações a seguir usa a spark_connect() função:

# 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. Em seguida, carregue os dados na memória da sessão do Spark ou aponte o Spark para o local dos dados para que a sessão 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)

Com sparklyr, você também pode write e read dados de um arquivo Lakehouse usando um valor de caminho ABFS. Para ler e escrever num Lakehouse, primeiro adicione o Lakehouse à sua sessão. No lado esquerdo do bloco de anotações, selecione Adicionar para adicionar um Lakehouse existente. Além disso, você pode criar um Lakehouse.

Para encontrar o caminho ABFS, selecione com o botão direito do mouse a pasta Arquivos no Lakehouse e selecione Copiar caminho ABFS. Cole o caminho para substituir abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files no exemplo de código a seguir:

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)

Utilize sparklyr para manipular dados

sparklyr fornece diferentes maneiras de processar dados dentro do Spark, com:

  • dplyr comandos
  • SparkSQL
  • Transformadores de características Spark

Utilize dplyr

Você pode usar comandos dplyr familiares para preparar dados dentro do Spark. Os comandos são executados dentro do Spark, evitando transferências de dados desnecessárias entre o R e 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

O recurso Manipulando dados com dplyr oferece mais informações sobre o uso do dplyr com o Spark. sparklyr e dplyr traduzir os comandos R para o Spark SQL. Use show_query() para mostrar a consulta resultante:

# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)

Usar SQL

Você também pode executar consultas SQL diretamente em tabelas dentro de um cluster do Spark. O objeto implementa uma interface de DBI para o Spark, para que você possa usar para executar 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 características

Ambos os métodos anteriores dependem de instruções SQL. O Spark fornece comandos que tornam algumas transformações de dados mais convenientes, sem o uso de SQL. Por exemplo, o ft_binarizer() comando simplifica a criação de uma nova coluna que indica se um valor em outra coluna excede ou não um determinado limite:

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

O recurso Reference -FT oferece uma lista completa dos Transformadores de Funcionalidades do Spark disponíveis através sparklyr.

Partilhar dados entre sparklyr e SparkR

Quando se conecta sparklyr ao cluster Spark Synapse com method = "synapse", ambos sparklyr e SparkR ficam disponíveis na mesma sessão e podem facilmente compartilhar dados entre si. Você pode criar uma tabela do Spark no sparklyr e lê-la de 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)

Aprendizagem automática

O exemplo a seguir usa ml_linear_regression() para ajustar um modelo de regressão linear. O modelo usa o conjunto de mtcars dados embutido para tentar prever o consumo de combustível (mpg) de um carro com base no peso (wt) do carro e no número de cilindros (cyl) do motor do carro. Todos os casos aqui assumem uma relação linear entre mpg e cada uma das nossas características.

Gerar conjuntos de dados de teste e treinamento

Use uma divisão - 70% para treinamento e 30% - para testar o modelo. As alterações a este rácio conduzem a diferentes modelos:

# 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

Treinar o modelo de Regressão Logística.

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

fit

Use summary() para saber mais sobre a qualidade do nosso modelo e a significância estatística de cada um dos nossos preditores:

summary(fit)

Use o modelo

Chamada ml_predict() para aplicar o modelo ao conjunto de dados de teste:

pred <- ml_predict(fit, partitions$test)

head(pred)

Visite Referência - ML para obter uma lista dos modelos do Spark ML disponíveis através do sparklyr.

Desconectar do cluster Spark

Para encerrar a sua sessão do Spark, chame spark_disconnect(), ou selecione o botão Parar sessão na parte superior da barra de ferramentas do notebook.

spark_disconnect(sc)

Saiba mais sobre as funcionalidades R: