Compartilhar via


Use o R para Apache Spark com Azure Synapse Analytics (Versão Prévia)

O Azure Synapse Analytics fornece suporte interno ao R para Apache Spark. Como parte disso, os cientistas de dados podem usar os notebooks do Azure Synapse Analytics para gravar e executar seu próprio código R. Isso também inclui suporte para SparkR e SparklyR, o que permite que os usuários interajam com o Spark usando interfaces Spark ou R familiares.

Neste artigo, você aprenderá a usar o R para Apache Spark com o Azure Synapse Analytics.

Runtime do R

O Azure Synapse Analytics dá suporte a um runtime do R que apresenta muitos pacotes do R populares de código aberto, incluindo o TidyVerse. O runtime do R está disponível em todos os pools do Apache Spark 3.

Para saber mais sobre as bibliotecas instaladas em cada runtime, acesse a seguinte página: – Runtimes do Azure Synapse Analytics

Criar e executar sessões de notebook

Um notebook do Azure Synapse é uma interface da Web para você criar ao vivo arquivos que contêm códigos, visualizações e textos de narração. Os notebooks são um bom lugar para validar ideias e fazer experimentos rápidos para obter insights de seus dados. Os notebooks também são amplamente usados na preparação e visualização de dados, no aprendizado de máquina e em outros cenários de Big Data.

Para começar a usar o R em notebooks do Synapse, você pode alterar o idioma primário definindo a opção de idioma para SparkR (R).

Captura de tela da opção de linguagem R.

Além disso, você pode usar várias linguagens em um notebook especificando o comando magic da linguagem no início de uma célula.

%%sparkr
# Enter your R code here

Para saber mais sobre notebooks no Azure Synapse Analytics, você pode visitar o guia sobre como gerenciar notebooks.

Instalar Pacotes

As bibliotecas fornecem código reutilizável que você pode querer incluir em seus programas ou projetos. Para disponibilizar código de terceiros ou compilado localmente para seus aplicativos, você pode instalar uma biblioteca em um dos pools do Apache Spark sem servidor ou na sessão do notebook.

Gerenciar pacotes do workspace do R

No Synapse, os pacotes do espaço de trabalho podem ser arquivos de <R_Package>.tar.gz públicos ou personalizados/privados. Quaisquer dependências também devem ser instaladas. Você pode carregar esses pacotes em seu workspace e, posteriormente, atribuí-los a um pool do Apache Spark sem servidor específico. Depois de atribuídos, esses pacotes de workspace são instalados automaticamente em todas as sessões do pool do Spark iniciadas no pool correspondente.

Para saber mais sobre como gerenciar bibliotecas de workspace, confira o seguinte artigo: – Gerenciar pacotes de workspace

Gerenciar sessões do R

Ao fazer análise de dados interativos ou aprendizado de máquina, você pode experimentar pacotes mais recentes ou pode precisar de pacotes que ainda não estão disponíveis no seu pool do Apache Spark. Em vez de atualizar a configuração do pool, os usuários agora podem usar pacotes no escopo da sessão para adicionar, gerenciar e atualizar dependências de sessão.

  • Quando você instala bibliotecas com escopo de sessão, somente o notebook atual tem acesso às bibliotecas especificadas.
  • Essas bibliotecas não afetarão outras sessões ou trabalhos usando o mesmo Pool do Spark.
  • Essas bibliotecas são instaladas na parte superior das bibliotecas de tempo de execução base e de pool.
  • As bibliotecas de notebook têm a precedência mais alta.
  • As bibliotecas do R com escopo de sessão não persistem entre sessões. Essas bibliotecas são instaladas no início de cada sessão quando os comandos de instalação relacionados são executados
  • As bibliotecas do R no escopo da sessão são instaladas automaticamente nos nós de driver e de trabalho

Por exemplo, os usuários podem instalar uma biblioteca do R de CRAN e instantâneos CRAN. No exemplo abaixo, Highcharter é um pacote popular para visualizações de R. Posso instalar esse pacote em todos os nós no meu pool do Apache Spark usando o seguinte comando:

install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

Para saber mais sobre como gerenciar bibliotecas de R de sessão, acesse o seguinte artigo: gerenciar pacotes de sessão do R

Utilitários de notebook

Os utilitários do Microsoft Spark (MSSparkUtils) são um pacote interno para ajudar você a executar tarefas comuns com facilidade. Você pode usar o MSSparkUtils para trabalhar com sistemas de arquivos, obter variáveis de ambiente, encadear notebooks e trabalhar com segredos. O MSSparkUtils tem suporte em notebooks do R.

Para começar, você pode executar os seguintes comandos:

library(notebookutils)
mssparkutils.fs.help()

Você pode saber mais sobre os comandos do MSSparkUtils com suporte visitando o seguinte artigo: usar os Utilitários do Microsoft Spark

Usar o SparkR

O SparkR é um pacote do R que fornece um front-end leve para usar o Apache Spark do R. O SparkR fornece uma implementação de quadro de dados distribuído que dá suporte a operações como seleção, filtragem, agregação, etc. O SparkR também dá suporte ao aprendizado de máquina distribuído usando o MLlib.

Criar um Dataframe do SparkR de um data.frame do R local

A maneira mais simples de criar um DataFrame é converter um data.frame do R local em um SparkDataFrame. Neste exemplo, usamos as.DataFrame e transmitimos o dataframe do R local para criar o SparkDataFrame.

df <- as.DataFrame(faithful)

# Displays the first part of the SparkDataFrame
head(df)
##  eruptions waiting
##1     3.600      79
##2     1.800      54

Criar um dataframe do SparkR usando a API de fonte de dados do Spark

O SparkR dá suporte à operação em várias de fontes de dados por meio da interface SparkDataFrame. O método geral de criação de um DataFrame usando uma fonte de dados é read.df. Esse método usa o caminho de carregamento do arquivo e o tipo de fonte de dados. O SparkR dá suporte à leitura de arquivos CSV, JSON, texto e Parquet nativamente.

# Read a csv from ADLSg2
df <- read.df('abfss://<container name>@<storage account name>.dfs.core.windows.net/avocado.csv', 'csv', header="true")
head(df)

Criar um dataframe do SparkR usando o SQL do Spark

Você também pode criar DataFrames do SparkR usando consultas do Spark SQL.

# Register this SparkDataFrame as a temporary view.
createOrReplaceTempView(df, "eruptions")

# SQL statements can be run by using the sql method
sql_df <- sql("SELECT * FROM eruptions")
head(sql_df)

Aprendizado de máquina

O SparkR expõe a maioria dos algoritmos de MLLib. Nos bastidores, o SparkR usa MLlib para treinar o modelo. Para saber mais sobre quais algoritmos de aprendizado de máquina têm suporte, acesse a documentação do SparkR e do MLlib.

# Create the DataFrame
cars <- cbind(model = rownames(mtcars), mtcars)
carsDF <- createDataFrame(cars)

# Fit a linear model over the dataset.
model <- spark.glm(carsDF, mpg ~ wt + cyl)

# Model coefficients are returned in a similar format to R's native glm().
summary(model)

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.

Para estabelecer uma conexão sparklyr, você pode usar o seguinte método de conexão em spark_connect().

spark_version <- "<enter Spark version>"
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config, method='synapse')

Próximas etapas