SparkR: ÜbersichtSparkR overview

Sparkr ist ein R-Paket, das ein lightweightfrontend bereitstellt, um Apache Spark von R zu verwenden. sparkr unterstützt auch das Erlernen verteilter Maschinelles Lernen mithilfe von mllib.SparkR is an R package that provides a light-weight frontend to use Apache Spark from R. SparkR also supports distributed machine learning using MLlib.

Sparkr in NotebooksSparkR in notebooks

  • Für Spark 2,0 und höher müssen Sie nicht explizit ein- sqlContext Objekt an jeden Funktions aufzurufen übergeben.For Spark 2.0 and above, you do not need to explicitly pass a sqlContext object to every function call. In diesem Artikel wird die neue Syntax verwendet.This article uses the new syntax. Alte Syntax Beispiele finden Sie unter sparkr 1,6 Overview.For old syntax examples, see SparkR 1.6 overview.
  • Für Spark 2,2 und höher wird sparkr von Notebooks standardmäßig nicht mehr importiert, da sparkr-Funktionen mit ähnlich benannten Funktionen aus anderen gängigen Paketen in Konflikt stehen.For Spark 2.2 and above, notebooks no longer import SparkR by default because SparkR functions were conflicting with similarly named functions from other popular packages. Zum Verwenden von sparkr können Sie library(SparkR) in Ihren Notebooks anrufen.To use SparkR you can call library(SparkR) in your notebooks. Die sparkr-Sitzung ist bereits konfiguriert, und alle sparkr-Funktionen werden mithilfe der vorhandenen Sitzung mit dem verbundenen Cluster kommunizieren.The SparkR session is already configured, and all SparkR functions will talk to your attached cluster using the existing session.

Sparkr in Spark-übermitteln von AufträgenSparkR in spark-submit jobs

Sie können Skripts ausführen, die sparkr auf Azure Databricks als Spark-Submit-Aufträge mit geringfügigen Codeänderungen verwenden.You can run scripts that use SparkR on Azure Databricks as spark-submit jobs, with minor code modifications. Ein Beispiel finden Sie unter Erstellen und Ausführen eines Spark-Submit-Auftrags für R-Skripts.For an example, refer to Create and run a spark-submit job for R scripts.

Erstellen von sparkr-dataframesCreate SparkR DataFrames

Sie können einen dataframe aus einer lokalen R data.frame , aus einer Datenquelle oder mithilfe einer Spark SQL-Abfrage erstellen.You can create a DataFrame from a local R data.frame, from a data source, or using a Spark SQL query.

Aus lokalem R data.frameFrom a local R data.frame

Die einfachste Möglichkeit zum Erstellen eines dataframes besteht darin, eine lokale R data.frame in eine zu konvertieren SparkDataFrame .The simplest way to create a DataFrame is to convert a local R data.frame into a SparkDataFrame. Insbesondere können wir createDataFrame die lokale R verwenden und übergeben data.frame , um eine zu erstellen SparkDataFrame .Specifically we can use createDataFrame and pass in the local R data.frame to create a SparkDataFrame. Wie die meisten anderen sparkr-Funktionen hat sich die createDataFrame Syntax in Spark 2,0 geändert.Like most other SparkR functions, createDataFrame syntax changed in Spark 2.0. Beispiele hierfür finden Sie im Code Ausschnitt.You can see examples of this in the code snippet bellow. Weitere Beispiele finden Sie unter " kreatedataframe ".Refer to createDataFrame for more examples.

library(SparkR)
df <- createDataFrame(faithful)

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

Verwenden der Datenquellen-APIUsing the data source API

Die allgemeine Methode zum Erstellen eines dataframes aus einer Datenquelle ist read.df .The general method for creating a DataFrame from a data source is read.df. Diese Methode nimmt den Pfad für die zu ladende Datei und den Typ der Datenquelle an.This method takes the path for the file to load and the type of data source. Sparkr unterstützt nativ das Lesen von CSV-, JSON-, Text-und Parkett Dateien.SparkR supports reading CSV, JSON, text, and Parquet files natively.

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

Sparkr leitet automatisch das Schema aus der CSV-Datei ab.SparkR automatically infers the schema from the CSV file.

Hinzufügen eines datenquellenanschlusses mit Spark-PaketenAdding a data source connector with Spark Packages

Mithilfe von Spark-Paketen können Sie datenquellenconnectors für beliebte Dateiformate wie Avro finden.Through Spark Packages you can find data source connectors for popular file formats such as Avro. Verwenden Sie als Beispiel das Spark-Avro-Paket , um eine Avro -Datei zu laden.As an example, use the spark-avro package to load an Avro file. Die Verfügbarkeit des Spark-Avro-Pakets hängt von der Image VersionIhres Clusters ab.The availability of the spark-avro package depends on your cluster’s image version. Siehe Avro-Datei.See Avro file.

Nehmen Sie zuerst eine vorhandene data.frame , konvertieren in einen Spark-Datenrahmen, und speichern Sie Sie als Avro-Datei.First take an existing data.frame, convert to a Spark DataFrame, and save it as an Avro file.

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

So überprüfen Sie, ob eine Avro-Datei gespeichert wurde:To verify that an Avro file was saved:

%fs ls /tmp/iris

Verwenden Sie nun das Spark-Avro-Paket erneut, um die Daten zu lesen.Now use the spark-avro package again to read back the data.

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

Die Datenquellen-API kann auch verwendet werden, um dataframes in mehreren Dateiformaten zu speichern.The data source API can also be used to save DataFrames into multiple file formats. Beispielsweise können Sie den dataframe aus dem vorherigen Beispiel mithilfe von in eine Parkett Datei speichern write.df .For example, you can save the DataFrame from the previous example to a Parquet file using write.df.

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

Aus einer Spark SQL-AbfrageFrom a Spark SQL query

Sie können auch sparkr dataframes mithilfe von Spark-SQL-Abfragen erstellen.You can also create SparkR DataFrames using Spark SQL queries.

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

age ist ein sparkdataframe.age is a SparkDataFrame.

Dataframe-VorgängeDataFrame operations

Spark-dataframes unterstützen eine Reihe von Funktionen für die strukturierte Datenverarbeitung.Spark DataFrames support a number of functions to do structured data processing. Hier sind einige grundlegende Beispiele.Here are some basic examples. Eine komplette Liste finden Sie in der API-Dokumentation.A complete list can be found in the API docs.

Auswählen von Zeilen und SpaltenSelect rows and columns

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

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

Gruppierung und AggregationGrouping and aggregation

Sparkdataframes unterstützen eine Reihe von häufig verwendeten Funktionen zum Aggregieren von Daten nach der Gruppierung.SparkDataFrames support a number of commonly used functions to aggregate data after grouping. Beispielsweise können Sie zählen, wie oft jede Wartezeit im treuen DataSet auftritt.For example you can count the number of times each waiting time appears in the faithful dataset.

head(count(groupBy(df, df$waiting)))
# 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)))

Spaltenvorgänge (Column operations)Column operations

Sparkr bietet eine Reihe von Funktionen, die direkt auf Spalten für die Datenverarbeitungs-und Aggregations Verarbeitung angewendet werden können.SparkR provides a number of functions that can be directly applied to columns for data processing and aggregation. Das folgende Beispiel zeigt die Verwendung grundlegender arithmetischer Funktionen.The following example shows the use of basic arithmetic functions.

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

Machine Learning Machine learning

Sparkr macht den größten Teil von mllib-Algorithmen verfügbar.SparkR exposes most of MLLib algorithms. Im Hintergrund verwendet sparkr mllib, um das Modell zu trainieren.Under the hood, SparkR uses MLlib to train the model.

Im folgenden Beispiel wird gezeigt, wie ein gausches GLM-Modell mithilfe von sparkr erstellt wird.The following example shows how to build a gaussian GLM model using SparkR. Um die lineare Regression auszuführen, legen Sie Familie auf fest "gaussian" .To run linear regression, set family to "gaussian". Um die logistische Regression auszuführen, legen Sie Familie auf fest "binomial" .To run logistic regression, set family to "binomial". Wenn sparkml-sparkr verwendet wird, führt automatisch eine One-Hot-Codierung von kategorischen Features durch, sodass Sie nicht manuell ausgeführt werden muss.When using SparkML GLM SparkR automatically performs one-hot encoding of categorical features so that it does not need to be done manually. Neben den Features von Zeichen folgen und doppelten Typen ist es auch möglich, über mllib-Vektor Features zu verfügen, um Kompatibilität mit anderen mllib-Komponenten zu erhalten.Beyond String and Double type features, it is also possible to fit over MLlib Vector features, for compatibility with other MLlib components.

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

Lernprogramme finden Sie unter sparkr ml-Tutorials.For tutorials, see SparkR ML tutorials.