Pular para o conteúdo principal

Visão geral do SparkR

important

SparkR em Databricks está obsoleto em Databricks Runtime 16.0 e acima. Databricks recomenda o uso de Sparklyr em vez disso.

O SparkR é um pacote R que fornece um front-end leve para usar o Apache Spark a partir do R. O SparkR também oferece suporte ao aprendizado de máquina distribuído usando o MLlib.

Referência da função SparkR

O senhor pode encontrar a referência mais recente da função SparkR em spark.apache.org.

O senhor também pode acessar a ajuda da função view no R Notebook ou RStudio depois de importar o pacote SparkR.

Documentação R incorporada

SparkR em Notebook

  • Para Spark 2.0e acima, você não precisa passar explicitamente um objeto sqlContext para cada chamada de função.
  • Para o Spark 2.2e acima, Notebook não importa mais o SparkR por default porque as funções do SparkR estavam em conflito com funções com nomes semelhantes de outros pacotes populares. Para usar o SparkR, você pode chamar library(SparkR) em seu Notebook. A sessão do SparkR já está configurada e todas as funções do SparkR se comunicarão com seus clusters anexados usando a sessão existente.

SparkR em spark-submit Job

O senhor pode executar scripts que usam SparkR em Databricks como spark-submit Job, com pequenas modificações no código.

Criar DataFrames SparkR

O senhor pode criar um DataFrame a partir de um R data.frame local, de uma fonte de dados ou usando uma consulta Spark SQL.

De um R local data.frame

A maneira mais simples de criar um DataFrame é converter um R local data.frame em um SparkDataFrame. Especificamente, podemos usar createDataFrame e passar o R local data.frame para criar um SparkDataFrame. Como a maioria das outras funções do SparkR, a sintaxe do createDataFrame mudou no Spark 2.0. O senhor pode ver exemplos disso no trecho de código abaixo. Para obter mais exemplos, consulte CreateDataFrame.

R
library(SparkR)
df <- createDataFrame(faithful)

# Displays the content of the DataFrame to stdout
head(df)

Usando a fonte de dados API

O método geral para criar um DataFrame a partir de uma fonte de dados é read.df. Esse método usa o caminho do arquivo a ser carregado e o tipo de fonte de dados. O SparkR suporta a leitura de arquivos CSV, JSON, texto e Parquet nativamente.

R
library(SparkR)
diamondsDF <- read.df("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", source = "csv", header="true", inferSchema = "true")
head(diamondsDF)

O SparkR infere automaticamente o esquema a partir do arquivo CSV.

Adição de um conector de fonte de dados com Spark pacote

Em Spark pacote, o senhor pode encontrar conectores de fontes de dados para formatos de arquivos populares, como Avro. Como exemplo, use o pacote spark-avro para carregar um arquivo Avro. A disponibilidade do pacote spark-avro depende da versão do seu clustering. Veja o arquivo Avro.

Primeiro, pegue um data.frame existente, converta-o em um Spark DataFrame e salve-o como um arquivo Avro.

R
require(SparkR)
irisDF <- createDataFrame(iris)
write.df(irisDF, source = "com.databricks.spark.avro", path = "dbfs:/tmp/iris.avro", mode = "overwrite")

Para verificar se um arquivo Avro foi salvo:

R
%fs ls /tmp/iris.avro

Agora, use o pacote spark-avro novamente para ler os dados.

R
irisDF2 <- read.df(path = "/tmp/iris.avro", source = "com.databricks.spark.avro")
head(irisDF2)

A fonte de dados API também pode ser usada para salvar DataFrames em vários formatos de arquivo. Por exemplo, o senhor pode salvar o DataFrame do exemplo anterior em um arquivo Parquet usando write.df.

R
write.df(irisDF2, path="dbfs:/tmp/iris.parquet", source="parquet", mode="overwrite")
Bash
%fs ls dbfs:/tmp/iris.parquet

De uma consulta Spark SQL

O senhor também pode criar SparkR DataFrames usando consultas Spark SQL.

R
# Register earlier df as temp view
createOrReplaceTempView(irisDF2, "irisTemp")
R
# Create a df consisting of only the 'species' column using a Spark SQL query
species <- sql("SELECT species FROM irisTemp")

species é um SparkDataFrame.

DataFrame operações

Os DataFrames do Spark suportam várias funções para realizar o processamento de dados estruturados . Aqui estão alguns exemplos básicos. Uma lista completa pode ser encontrada nos documentos da API.

Selecionar linhas e colunas

R
# Import SparkR package if this is a new notebook
require(SparkR)

# Create DataFrame
df <- createDataFrame(faithful)
R
# Select only the "eruptions" column
head(select(df, df$eruptions))
R
# You can also pass in column name as strings
head(select(df, "eruptions"))
R
# Filter the DataFrame to only retain rows with wait times shorter than 50 mins
head(filter(df, df$waiting < 50))

Agrupamento e agregação

O SparkDataFrames suporta várias funções comumente usadas para dados agregados após o agrupamento. Por exemplo, o senhor pode contar o número de vezes que cada tempo de espera aparece no fiel dataset.

R
head(count(groupBy(df, df$waiting)))
R
# You can also sort the output from the aggregation to get the most common waiting times
waiting_counts <- count(groupBy(df, df$waiting))
head(arrange(waiting_counts, desc(waiting_counts$count)))

Coluna operações

O SparkR fornece várias funções que podem ser aplicadas diretamente às colunas do site para processamento e agregação de dados. O exemplo a seguir mostra o uso de funções aritméticas básicas.

R
# Convert waiting time from hours to seconds.
# You can assign this to a new column in the same DataFrame
df$waiting_secs <- df$waiting * 60
head(df)

Aprendizagem automática

SparkR expõe a maioria dos algoritmos do MLlib. Por trás disso, o SparkR usa o MLlib para treinar o modelo.

O exemplo a seguir mostra como criar um modelo GLM gaussiano usando o SparkR. Para executar a regressão linear, defina a família como "gaussian". Para executar a regressão logística, defina a família como "binomial". Ao usar o SparkML, o GLM SparkR executa automaticamente a codificação one-hot do recurso categórico para que não seja necessário fazê-lo manualmente. Além das cadeias de caracteres e do recurso do tipo Double, também é possível encaixar o recurso MLlib Vector, para compatibilidade com outros componentes do MLlib.

R
# Create the DataFrame
df <- createDataFrame(iris)

# Fit a linear model over the dataset.
model <- glm(Sepal_Length ~ Sepal_Width + Species, data = df, family = "gaussian")

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

Para obter um tutorial, consulte o tutorial: Analisar dados com glm.

Para obter exemplos adicionais, consulte Trabalhar com DataFrames e tabelas no R.