Usar o R para Apache Spark com o Azure Synapse Analytics (Visualização)

O Azure Synapse Analytics fornece suporte R incorporado para o Apache Spark. Como parte disso, os cientistas de dados podem usar os blocos de anotações do Azure Synapse Analytics para escrever e executar seu código R. Isso também inclui suporte para SparkR e SparklyR, que permite que os usuários interajam com o Spark usando interfaces familiares do Spark ou R.

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

Tempo de execução R

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

Para saber mais sobre as bibliotecas instaladas em cada tempo de execução, você pode visitar a seguinte página: - Azure Synapse Analytics Runtimes

Criar e executar sessões de bloco de notas

Um bloco de anotações do Azure Synapse é uma interface da Web para você criar arquivos que contêm código dinâmico, visualizações e texto narrativo. Os blocos de notas são um bom local para validar ideias e utilizar experiências rápidas para obter informações dos seus dados. Os notebooks também são amplamente utilizados na preparação de dados, visualização de dados, aprendizado de máquina e outros cenários de big data.

Para começar a usar R em blocos de anotações Synapse, você pode alterar o idioma principal definindo a opção de idioma como SparkR (R).

Screenshot of the R language option.

Além disso, você pode usar vários idiomas em um bloco de anotações especificando o comando language magic no início de uma célula.

%%sparkr
# Enter your R code here

Para saber mais sobre blocos de notas no Azure Synapse Analytics, pode visitar o guia sobre como gerir blocos de notas.

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 criado localmente para seus aplicativos, você pode instalar uma biblioteca em um dos pools do Apache Spark sem servidor ou sessão de notebook.

Gerenciar pacotes de espaço de trabalho R

No Synapse, os pacotes de espaço de trabalho podem ser arquivos R tar.gz personalizados ou privados. Você pode carregar esses pacotes em seu espaço de trabalho e, posteriormente, atribuí-los a um pool específico do Apache Spark sem servidor. Uma vez atribuídos, esses pacotes de espaço de trabalho 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 espaço de trabalho, consulte o seguinte artigo: - Gerenciar pacotes de espaço de trabalho

Gerenciar sessões de R

Ao fazer análise de dados interativa ou aprendizado de máquina, você pode tentar pacotes mais recentes ou pode precisar de pacotes que estão atualmente indisponíveis em seu pool do Apache Spark. Em vez de atualizar a configuração do pool, os usuários agora podem usar pacotes com escopo de sessão para adicionar, gerenciar e atualizar dependências de sessão.

  • Quando você instala bibliotecas com escopo de sessão, somente o bloco de anotações atual tem acesso às bibliotecas especificadas.
  • Essas bibliotecas não afetarão outras sessões ou trabalhos que usam o mesmo pool do Spark.
  • Essas bibliotecas são instaladas sobre o tempo de execução base e bibliotecas de nível de pool.
  • As bibliotecas de blocos de notas têm a maior precedência.
  • As bibliotecas R com escopo de sessão não persistem nas 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 R com escopo de sessão são instaladas automaticamente nos nós de driver e de trabalho

Por exemplo, os usuários podem instalar uma biblioteca R a partir de instantâneos de CRAN e RAN. No exemplo abaixo, Highcharter é um pacote popular para visualizações R. Posso instalar este pacote em todos os nós dentro do 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 sessão R, você pode visitar o seguinte artigo: gerenciar pacotes de sessão R

Utilitários para Notebook

Microsoft Spark Utilities (MSSparkUtils) é um pacote interno para ajudá-lo a executar facilmente tarefas comuns. Você pode usar o MSSparkUtils para trabalhar com sistemas de arquivos, obter variáveis de ambiente, encadear blocos de anotações e trabalhar com segredos. MSSparkUtils é suportado para notebooks R.

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

library(notebookutils)
mssparkutils.fs.help()

Você pode saber mais sobre os comandos MSSparkUtils suportados visitando o seguinte artigo: use o Microsoft Spark Utilities

Utilizar o SparkR

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

Criar um Dataframe SparkR a partir de um data.frame R local

A maneira mais simples de criar um DataFrame é converter um data.frame R local em um SparkDataFrame. Neste exemplo, usamos as.DataFrame e passamos o dataframe 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 da fonte de dados do Spark

O SparkR suporta a operação em várias fontes de dados através da interface SparkDataFrame. O método geral para criar um DataFrame a partir de uma fonte de dados é read.df. Esse método usa o caminho para o arquivo ser carregado e o tipo de fonte de dados. O SparkR suporta a 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 SparkR usando o Spark SQL

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

# 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)

Machine learning

O SparkR expõe a maioria dos algoritmos MLLib. Sob o capô, o SparkR usa MLlib para treinar o modelo. Para saber mais sobre quais algoritmos de aprendizado de máquina são suportados, você pode visitar a documentação do SparkR e 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)

Use SparklyR

SparklyR é uma interface R para Apache Spark. Ele fornece um mecanismo para interagir com o Spark usando interfaces R familiares.

Para estabelecer uma sparklyr conexão, 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óximos passos