Share via


A SparkR áttekintése

A SparkR egy R-csomag, amely könnyű előtérrendszert biztosít az Apache Spark R-ből való használatához. A SparkR az elosztott gépi tanulást is támogatja az MLlib használatával.

SparkR-függvényreferencia

A SparkR-függvény legújabb referenciáját a spark.apache.org találja.

A SparkR-csomag importálása után az R-jegyzetfüzetekben vagy az RStudio-ban is megtekintheti a függvény súgóját.

Embedded R-dokumentáció

SparkR jegyzetfüzetekben

  • A Spark 2.0-s és újabb verziók esetében nem kell explicit módon átadnia egy objektumot sqlContext minden függvényhívásnak.
  • A Spark 2.2 és újabb verziók esetében a jegyzetfüzetek alapértelmezés szerint nem importálják a SparkR-t, mivel a SparkR-függvények ütköztek más népszerű csomagok hasonló nevű függvényeivel. A SparkR használatához meghívhatja library(SparkR) a jegyzetfüzeteket. A SparkR-munkamenet már konfigurálva van, és az összes SparkR-függvény a meglévő munkamenet használatával kommunikál a csatolt fürthöz.

SparkR a spark-submit feladatokban

Az Azure Databricks SparkR-ét spark-küldési feladatként használó szkripteket futtathat kisebb kódmódosításokkal.

SparkR-adatkeretek létrehozása

DataFrame-et helyi R-ből data.frame, adatforrásból vagy Spark SQL-lekérdezéssel is létrehozhat.

Helyi R-ből data.frame

A DataFrame létrehozásának legegyszerűbb módja, ha egy helyi R-t data.frame átalakít egy SparkDataFrame. Pontosabban használhatjuk és átadhatjuk createDataFrame a helyi R-t data.frame egy SparkDataFrame. A többi SparkR-függvényhez hasonlóan a createDataFrame szintaxis is módosult a Spark 2.0-ban. Erre példákat az alábbi kódrészletben tekinthet meg. További példákért lásd: createDataFrame.

library(SparkR)
df <- createDataFrame(faithful)

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

Az adatforrás API használata

A DataFrame adatforrásból való létrehozásának általános módja a következő read.df: . Ez a módszer a betöltendő fájl elérési útját és az adatforrás típusát veszi alapul. A SparkR támogatja a CSV-, JSON-, szöveg- és Parquet-fájlok natív olvasását.

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

A SparkR automatikusan a CSV-fájlból következtet a sémára.

Adatforrás-összekötő hozzáadása a Spark Packages használatával

A Spark Packages segítségével adatforrás-összekötőket találhat népszerű fájlformátumokhoz, például az Avro-hoz. Példaként használja a spark-avro-csomagot egy Avro-fájl betöltéséhez. A spark-avro-csomag elérhetősége a fürt verziójától függ. Lásd: Avro-fájl.

Először készítsen egy meglévőt data.frame, konvertálja Spark DataFrame-fájllá, és mentse Avro-fájlként.

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

Avro-fájl mentésének ellenőrzése:

%fs ls /tmp/iris.avro

Most használja ismét a spark-avro csomagot az adatok visszaolvasásához.

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

Az adatforrás API-val a DataFrame-eket több fájlformátumba is mentheti. Mentheti például a DataFrame-et az előző példából egy Parquet-fájlba a használatával write.df.

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

Spark SQL-lekérdezésből

SparkR DataFrame-eket Spark SQL-lekérdezésekkel is létrehozhat.

# 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 Egy SparkDataFrame.

DataFrame-műveletek

A Spark DataFrame-ek számos függvényt támogatnak strukturált adatfeldolgozáshoz. Íme néhány alapvető példa. Az API-dokumentumokban teljes lista található.

Sorok és oszlopok kijelölése

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

Csoportosítás és összesítés

A SparkDataFrames számos gyakran használt függvényt támogat az adatok csoportosítás utáni összesítéséhez. Megszámolhatja például, hogy az egyes várakozási idők hányszor jelennek meg a hűséges adathalmazban.

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

Oszlopműveletek

A SparkR számos olyan függvényt biztosít, amelyek közvetlenül alkalmazhatók az adatok feldolgozására és összesítésére szolgáló oszlopokra. Az alábbi példa az alapszintű aritmetikai függvények használatát mutatja be.

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

Gépi tanulás

A SparkR a legtöbb MLLib-algoritmust elérhetővé teszi. A motorháztető alatt a SparkR az MLlib használatával tanítja be a modellt.

Az alábbi példa bemutatja, hogyan hozhat létre gauss GLM-modellt a SparkR használatával. Lineáris regresszió futtatásához állítsa be a családot a következőre "gaussian": . A logisztikai regresszió futtatásához állítsa be a családot a következőre "binomial": . A SparkML GLM használatakor a SparkR automatikusan elvégzi a kategorikus funkciók egyszeri kódolását, hogy ne kelljen manuálisan elvégezni. A sztring- és kettős típusú funkciókon túl az MLlib Vector-funkciókkal is elfér, hogy kompatibilis legyen más MLlib-összetevőkkel.

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

Az oktatóanyagokért lásd : Oktatóanyag: Adatok elemzése a glm használatával.

További példákért lásd : DataFrames és táblák használata az R-ben.