Bagikan melalui


Gambaran umum SparkR

Penting

SparkR di Databricks yang tidak digunakan lagi di Databricks Runtime 16.0 ke atas. Databricks merekomendasikan menggunakan sparklyr sebagai gantinya.

SparkR adalah paket R yang menyediakan frontend ringan untuk menggunakan Apache Spark dari R. SparkR juga mendukung pembelajaran mesin terdistribusi menggunakan MLlib.

Referensi fungsi SparkR

Anda dapat menemukan referensi fungsi SparkR terbaru di spark.apache.org.

Anda juga dapat melihat bantuan fungsi di buku catatan R atau RStudio setelah mengimpor paket SparkR.

Dokumentasi R tersemat

SparkR di buku catatan

  • Untuk versi Spark 2.0 ke atas, Anda tidak perlu secara eksplisit meneruskan objek sqlContext ke setiap panggilan fungsi.
  • Untuk versi Spark 2.2 ke atas, notebook tidak lagi mengimpor SparkR secara default karena fungsi SparkR bertentangan dengan fungsi bernama serupa dari paket populer lainnya. Untuk menggunakan SparkR, Anda dapat memanggil library(SparkR) di buku catatan Anda. Sesi SparkR sudah dikonfigurasi, dan semua fungsi SparkR akan berbicara dengan kluster Anda yang terlampir menggunakan sesi yang ada.

SparkR dalam pekerjaan spark-submit

Anda dapat menjalankan skrip yang menggunakan SparkR di Azure Databricks sebagai pekerjaan spark-submit, dengan sedikit modifikasi kode.

Membuat SparkR DataFrames

Anda dapat membuat DataFrame dari R data.frame lokal, dari sumber data, atau menggunakan kueri SQL Spark.

Dari R lokal data.frame

Cara termudah untuk membuat DataFrame adalah dengan mengonversi R data.frame lokal menjadi SparkDataFrame. Secara khusus kita dapat menggunakan createDataFrame dan melewatkannya di R data.frame lokal untuk membuat SparkDataFrame. Seperti kebanyakan fungsi SparkR lainnya, sintaks createDataFrame berubah di Spark 2.0. Anda dapat melihat contoh ini dalam cuplikan kode di bawah ini. Untuk contoh selengkapnya, lihat createDataFrame.

library(SparkR)
df <- createDataFrame(faithful)

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

Menggunakan API sumber data

Metode umum untuk membuat DataFrame dari sumber data adalah read.df. Metode ini mengambil jalur untuk memuat file dan jenis sumber data. SparkR mendukung membaca file CSV, JSON, teks, dan Parquet secara native.

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

SparkR secara otomatis menyimpulkan skema dari file CSV.

Menambahkan konektor sumber data dengan Paket Spark

Melalui Paket Spark, Anda dapat menemukan konektor sumber data untuk format file populer seperti Avro. Misalnya, gunakan paket spark-avro untuk memuat file Avro. Ketersediaan paket spark-avro tergantung pada versi kluster Anda. Lihat file Avro.

Pertama, ambil data.frame yang sudah ada, konversi ke Spark DataFrame, dan simpan sebagai file Avro.

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

Untuk memverifikasi bahwa file Avro disimpan:

%fs ls /tmp/iris.avro

Sekarang gunakan lagi paket spark-avro untuk membaca data kembali.

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

API sumber data juga dapat digunakan untuk menyimpan DataFrames ke dalam beberapa format file. Misalnya, kita dapat menyimpan DataFrame dari contoh sebelumnya ke file Parquet menggunakan write.df.

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

Dari kueri SQL Spark

Anda juga dapat membuat DataFrames SparkR menggunakan kueri SQL Spark.

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

Operasi DataFrame

SparkR DataFrames mendukung sejumlah fungsi untuk melakukan pemrosesan data terstruktur. Berikut adalah beberapa contoh dasar. Daftar lengkap dapat ditemukan di dokumen API .

Pilih baris dan kolom

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

Pengelompokan dan agregasi

SparkR DataFrames mendukung sejumlah fungsi yang umum digunakan untuk mengagregasi data setelah pengelompokan. Misalnya, Anda dapat menghitung jumlah kemunculan setiap waktu tunggu di himpunan data yang tepat.

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

Operasi kolom

SparkR menyediakan sejumlah fungsi yang dapat langsung diterapkan ke kolom untuk pemrosesan dan agregasi data. Contoh berikut menunjukkan penggunaan fungsi aritmatika dasar.

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

Pembelajaran mesin

SparkR mengekspos sebagian besar algoritma MLLib. Di balik layanan, SparkR menggunakan MLlib untuk melatih model.

Contoh berikut menunjukkan cara membangun model GLM gaussian menggunakan SparkR. Untuk menjalankan regresi linier, atur keluarga ke "gaussian". Untuk menjalankan regresi logistik, atur keluarga ke "binomial". Saat menggunakan SparkML GLM, SparkR secara otomatis melakukan pengodean one-hot pada fitur kategoris, sehingga tidak perlu dilakukan secara manual. Di luar fitur jenis String dan Ganda, fitur Vektor MLlib juga dapat dipasang untuk kompatibilitas dengan komponen MLlib lainnya.

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

Untuk tutorial, lihat Tutorial: Menganalisis data dengan glm.

Untuk contoh tambahan, lihat Bekerja dengan DataFrame dan tabel di R.