SparkR'ye genel bakış

SparkR, R'den Apache Spark'ı kullanmak için hafif bir ön uç sağlayan bir R paketidir. SparkR, MLlib kullanarak dağıtılmış makine öğrenmesini de destekler.

SparkR işlev başvurusu

En son SparkR işlev başvurularını spark.apache.org bulabilirsiniz.

SparkR paketini içeri aktardıktan sonra R not defterlerinde veya RStudio'da işlev yardımını da görüntüleyebilirsiniz.

Embedded R documentation

Not defterlerinde SparkR

  • Spark 2.0 ve üzeri için her işlev çağrısına açıkça bir sqlContext nesne geçirmeniz gerekmez.
  • SparkR işlevleri diğer popüler paketlerdeki benzer adlandırılmış işlevlerle çakıştığı için Spark 2.2 ve üzeri için not defterleri varsayılan olarak SparkR'yi içeri aktarmaz. SparkR'yi kullanmak için not defterlerinizde arama library(SparkR) yapabilirsiniz. SparkR oturumu zaten yapılandırılmıştır ve tüm SparkR işlevleri mevcut oturumu kullanarak ekli kümenizle iletişim kuracaktır.

Spark-submit işlerinde SparkR

Azure Databricks'te SparkR kullanan betikleri küçük kod değişiklikleriyle spark-submit işleri olarak çalıştırabilirsiniz.

SparkR Veri Çerçeveleri Oluşturma

Veri kaynağından veya Spark SQL sorgusu kullanarak yerel R'den data.frameDataFrame oluşturabilirsiniz.

Yerel R'den data.frame

DataFrame oluşturmanın en basit yolu yerel R'yi data.frame içine SparkDataFramedönüştürmektir. Özellikle bir oluşturmak SparkDataFrameiçin yerel R'yi data.frame kullanabilir createDataFrame ve geçirebiliriz. Diğer SparkR işlevlerinin çoğunda olduğu gibi Spark createDataFrame 2.0'da söz dizimi de değiştirildi. Bunun örneklerini kod parçacığı köründe görebilirsiniz. Daha fazla örnek için bkz . createDataFrame.

library(SparkR)
df <- createDataFrame(faithful)

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

Veri kaynağı API'sini kullanma

Bir veri kaynağından DataFrame oluşturmak için genel yöntemdir read.df. Bu yöntem, dosyanın yüklenecek yolunu ve veri kaynağı türünü alır. SparkR, CSV, JSON, metin ve Parquet dosyalarını yerel olarak okumayı destekler.

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

SparkR şemayı CSV dosyasından otomatik olarak çıkartır.

Spark Paketleri ile veri kaynağı bağlayıcısı ekleme

Spark Paketleri aracılığıyla Avro gibi popüler dosya biçimleri için veri kaynağı bağlayıcıları bulabilirsiniz. Örneğin, spark-avro paketini kullanarak bir Avro dosyası yükleyin. Spark-avro paketinin kullanılabilirliği kümenizin sürümüne bağlıdır. Bkz. Avro dosyası.

İlk olarak mevcut data.framebir öğesini alın, Spark DataFrame'e dönüştürün ve bunu Avro dosyası olarak kaydedin.

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

Bir Avro dosyasının kaydedildiğini doğrulamak için:

%fs ls /tmp/iris.avro

Şimdi spark-avro paketini kullanarak verileri yeniden okuyun.

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

Veri kaynağı API'si, DataFrame'leri birden çok dosya biçimine kaydetmek için de kullanılabilir. Örneğin, önceki örnekteki DataFrame'i kullanarak write.dfbir Parquet dosyasına kaydedebilirsiniz.

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

Spark SQL sorgusundan

Spark SQL sorgularını kullanarak SparkR DataFrame'ler de oluşturabilirsiniz.

# 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 bir SparkDataFrame'dir.

DataFrame işlemleri

Spark DataFrames, yapılandırılmış veri işleme gerçekleştirmek için bir dizi işlevi destekler. Aşağıda bazı temel örnekler verilmiştir. Tam bir liste API belgelerinde bulunabilir.

Satır ve sütun seçme

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

Gruplandırma ve toplama

SparkDataFrames, gruplandırma sonrasında verileri toplamak için yaygın olarak kullanılan bir dizi işlevi destekler. Örneğin, sadık veri kümesinde her bekleme süresinin kaç kez görüneceğini sayabilirsiniz.

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

Sütun işlemleri

SparkR, veri işleme ve toplama için sütunlara doğrudan uygulanabilen bir dizi işlev sağlar. Aşağıdaki örnekte temel aritmetik işlevlerin kullanımı gösterilmektedir.

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

Makine öğrenmesi

SparkR, MLLib algoritmalarının çoğunu kullanıma sunar. SparkR, modeli eğitmek için arka planda MLlib kullanır.

Aşağıdaki örnekte SparkR kullanarak gaussian GLM modelinin nasıl derlendği gösterilmektedir. Doğrusal regresyon çalıştırmak için aileyi olarak "gaussian"ayarlayın. Lojistik regresyon çalıştırmak için aileyi olarak "binomial"ayarlayın. SparkML GLM SparkR kullanılırken otomatik olarak kategorik özelliklerin tek sık kodlamasını gerçekleştirir, böylece el ile yapılması gerekmez. Dize ve Çift tür özelliklerinin ötesinde, diğer MLlib bileşenleriyle uyumluluk için MLlib Vector özelliklerine de sığabilir.

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

Öğreticiler için bkz . Öğretici: Verileri glm ile çözümleme.

Ek örnekler için bkz . R'de DataFrame'lerle ve tablolarla çalışma.