Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
SparkR v noteboocích
- Ve Sparku 2.0 a vyšším nemusíte při každém volání funkce explicitně předávat objekt
sqlContext. - 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ů. Chcete-li použít SparkR, můžete v noteboocích spustit
library(SparkR). 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 prostředí 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 jako argument lokální R data.frame, a vytvořit tak 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í schéma ze souboru CSV.
Přidání konektoru ke zdroji dat pomocí Spark Packages
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 Čtení a zápis souborů Avro.
Nejprve vezměte existující data.frame, převeďte jej na Spark DataFrame a uložte jej 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ů. Úplný seznam najdete v dokumentaci k rozhraní API .
Výběr řádků a sloupců
# 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 se sloupci
SparkR poskytuje řadu funkcí, které je možné přímo použít u sloupců 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, nastavte rodinu na "gaussian". Pokud chcete spustit logistickou regresi, nastavte rodinu na "binomial". Při použití SparkML GLM SparkR automaticky provádí one-hot kódování kategoriálních proměnných, takže jej není nutné 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 datovými rámci a tabulkami v jazyce R.