Sdílet prostřednictvím


Přehled SparkR

Důležitý

SparkR v Databricks je zastaralý v Databricks Runtime 16.0 a vyšších. Databricks místo toho doporučuje používat sparklyr.

SparkR je balíček R, který poskytuje lehký front-end pro použití Apache Sparku z R. SparkR také podporuje distribuované strojové učení pomocí knihovny MLlib.

Reference k funkcím SparkR

Nejnovější referenční informace o funkcích SparkR najdete na spark.apache.org.

Po importu balíčku SparkR můžete také zobrazit nápovědu k funkcím v poznámkových blocích R nebo RStudio.

Dokumentace k vloženým jazyku R

SparkR v poznámkových blocích

  • Pro Spark 2.0 a vyšší není nutné explicitně předat objekt každému sqlContext volání funkce.
  • V případě Sparku 2.2 a novějších už poznámkové bloky ve výchozím nastavení neimportují SparkR, protože funkce SparkR byly v konfliktu s podobnými pojmenovanými funkcemi z jiných oblíbených balíčků. Pokud chcete použít SparkR, můžete volat library(SparkR) v poznámkových blocích. Relace SparkR je už nakonfigurovaná a všechny funkce SparkR budou komunikovat s připojeným clusterem pomocí existující relace.

SparkR v úlohách spark-submit

Můžete spouštět skripty, které používají SparkR v Azure Databricks jako úlohy spark-submit, s menšími úpravami kódu.

Vytváření datových rámců SparkR

Datový rámec můžete vytvořit z místního jazyka R data.frame, ze zdroje dat nebo pomocí dotazu Spark SQL.

Z místního jazyka R data.frame

Nejjednodušší způsob, jak vytvořit datový rámec, je převést místní R data.frame na .SparkDataFrame Konkrétně můžeme použít createDataFrame a předat místní R data.frame k vytvoření SparkDataFrame. Stejně jako většina ostatních funkcí SparkR se createDataFrame syntaxe změnila ve Sparku 2.0. Příklady najdete v následujícím fragmentu kódu. Další příklady najdete v tématu createDataFrame.

library(SparkR)
df <- createDataFrame(faithful)

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

Použití rozhraní API zdroje dat

Obecná metoda pro vytvoření datového rámce ze zdroje dat je read.df. Tato metoda přebírá cestu pro načtení souboru a typ zdroje dat. SparkR nativně podporuje čtení souborů CSV, JSON, textu a Parquet.

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

SparkR automaticky odvodí schema ze souboru CSV.

Přidání konektoru zdroje dat s balíčky Sparku

Prostřednictvím balíčků Sparku najdete konektory zdroje dat pro oblíbené formáty souborů, jako je Avro. Jako příklad použijte balíček spark-avro k načtení souboru Avro . Dostupnost balíčku Spark-avro závisí na verzi vašeho clusteru. Viz soubor Avro.

Nejprve převeďte existující data.framedatový rámec Sparku a uložte ho jako soubor Avro.

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

Ověření uložení souboru Avro:

%fs ls /tmp/iris.avro

Teď znovu použijte balíček spark-avro ke čtení dat.

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

Rozhraní API zdroje dat lze také použít k ukládání datových rámců do více formátů souborů. Datový rámec z předchozího příkladu můžete například uložit do souboru Parquet pomocí write.df.

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

Z dotazu Spark SQL

Datové rámce SparkR můžete vytvářet také pomocí dotazů Spark SQL.

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

species je SparkDataFrame.

Operace datového rámce

Datové rámce Spark podporují řadu funkcí pro zpracování strukturovaných dat. Tady je několik základních příkladů. Kompletní list najdete v dokumentaci rozhraní API .

Select řádků a 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))

Seskupení a agregace

SparkDataFrames podporuje řadu běžně používaných funkcí pro agregaci dat po seskupení. Můžete například spočítat, kolikrát se každý čas čekání zobrazí v věrné datové sadě.

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

operace Column

SparkR poskytuje řadu funkcí, které lze přímo použít na columns pro zpracování a agregaci dat. Následující příklad ukazuje použití základních aritmetických funkcí.

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

Strojové učení

SparkR zveřejňuje většinu algoritmů MLLib. SparkR pod kapotou používá K trénování modelu MLlib.

Následující příklad ukazuje, jak vytvořit gaussian GLM model pomocí SparkR. Chcete-li spustit lineární regresi, použijte skupinu set pro "gaussian". Pokud chcete spustit logistickou regresi, set rodina "binomial". Pokud používáte SparkML GLM SparkR, automaticky provádí kódování kategorických funkcí s jedním žhavým kódováním, aby se nemuselo provádět ručně. Kromě funkcí typu String a Double je také možné přizpůsobit funkce MLlib Vector, aby byly kompatibilní s jinými komponentami knihovny MLlib.

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

Kurzy najdete v tématu Kurz: Analýza dat pomocí nástroje glm.

Další příklady najdete v tématu Práce s DataFrames a tables v R.