Gunakan sparklyr

sparklyr adalah antarmuka R ke Apache Spark. Ini menyediakan mekanisme untuk berinteraksi dengan Spark menggunakan antarmuka R yang familier. Anda dapat menggunakan sparklyr melalui definisi kerja batch Spark atau dengan notebook Microsoft Fabric interaktif.

sparklyrdigunakan bersama dengan paket rapi lainnya seperti dplyr. Microsoft Fabric mendistribusikan versi stabil terbaru sparklyr dan rapi dengan setiap rilis runtime. Anda dapat mengimpornya dan mulai menggunakan API.

Prasyarat

  • Buka atau buat buku catatan. Untuk mempelajari caranya, lihat Cara menggunakan notebook Microsoft Fabric.

  • Atur opsi bahasa ke SparkR (R) untuk mengubah bahasa utama.

  • Lampirkan buku catatan Anda ke lakehouse. Di sisi kiri, pilih Tambahkan untuk menambahkan lakehouse yang ada atau untuk membuat lakehouse.

Koneksi sparklyr ke kluster Synapse Spark

Gunakan metode koneksi berikut untuk spark_connect() membuat sparklyr koneksi. Kami mendukung metode koneksi baru yang disebut synapse, yang memungkinkan Anda untuk terhubung ke sesi Spark yang ada. Ini secara dramatis mengurangi sparklyr waktu mulai sesi. Selain itu, kami menyumbangkan metode koneksi ini ke proyek sumber terbuka d sparklyr. Dengan method = "synapse", Anda dapat menggunakan dan sparklyrSparkR dalam sesi yang sama dan dengan mudah berbagi data di antara mereka.

# connect sparklyr to your spark cluster
spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", method = "synapse", config = config)

Menggunakan sparklyr untuk membaca data

Sesi Spark baru tidak berisi data. Langkah pertama adalah memuat data ke memori sesi Spark Anda, atau mengarahkan Spark ke lokasi data sehingga dapat mengakses data sesuai permintaan.

# load the sparklyr package
library(sparklyr)

# copy data from R environment to the Spark session's memory
mtcars_tbl <- copy_to(sc, mtcars, "spark_mtcars", overwrite = TRUE)

head(mtcars_tbl)

Menggunakan sparklyr, Anda juga write dapat dan read data dari file Lakehouse menggunakan jalur ABFS. Untuk membaca dan menulis ke Lakehouse, pertama-tama tambahkan ke sesi Anda. Di sisi kiri buku catatan, pilih Tambahkan untuk menambahkan Lakehouse yang sudah ada atau buat Lakehouse.

Untuk menemukan jalur ABFS Anda, klik kanan pada folder File di Lakehouse Anda, lalu pilih Salin jalur ABFS. Tempelkan jalur Anda untuk mengganti abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files dalam kode ini:

temp_csv = "abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files/data/mtcars.csv"

# write the table to your lakehouse using the ABFS path
spark_write_csv(mtcars_tbl, temp_csv, header = TRUE, mode = 'overwrite')

# read the data as CSV from lakehouse using the ABFS path
mtcarsDF <- spark_read_csv(sc, temp_csv) 
head(mtcarsDF)

Menggunakan sparklyr untuk memanipulasi data

sparklyr menyediakan beberapa metode untuk memproses data di dalam Spark menggunakan:

  • dplyr Perintah
  • SparkSQL
  • Transformer fitur Spark

Menggunakan dplyr

Anda dapat menggunakan perintah yang sudah dikenal dplyr untuk menyiapkan data di dalam Spark. Perintah berjalan di dalam Spark, sehingga tidak ada transfer data yang tidak perlu antara R dan Spark.

Klik Manipulasi Data dengan dplyr untuk melihat dokumentasi tambahan tentang menggunakan dplyr dengan Spark.

# count cars by the number of cylinders the engine contains (cyl), order the results descendingly
library(dplyr)

cargroup <- group_by(mtcars_tbl, cyl) %>%
  count() %>%
  arrange(desc(n))

cargroup

sparklyr dan dplyr terjemahkan perintah R ke Spark SQL untuk kami. Untuk melihat penggunaan show_query()kueri yang dihasilkan :

# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)

Menggunakan SQL

Dimungkinkan juga untuk menjalankan kueri SQL langsung terhadap tabel dalam kluster Spark. Objek mengimplementasikan spark_connection() antarmuka DBI untuk Spark, sehingga Anda dapat menggunakan dbGetQuery() untuk menjalankan SQL dan mengembalikan hasilnya sebagai bingkai data R:

library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")

Menggunakan Transformer Fitur

Kedua metode sebelumnya mengandalkan pernyataan SQL. Spark menyediakan perintah yang membuat beberapa transformasi data lebih nyaman, dan tanpa menggunakan SQL.

Misalnya, ft_binarizer() perintah menyederhanakan pembuatan kolom baru yang menunjukkan apakah nilai kolom lain berada di atas ambang batas tertentu.

Anda dapat menemukan daftar lengkap Transformer Fitur Spark yang tersedia melalui sparklyr dari Referensi -FT.

mtcars_tbl %>% 
  ft_binarizer("mpg", "over_20", threshold = 20) %>% 
  select(mpg, over_20) %>% 
  head(5)

Berbagi data antara sparklyr dan SparkR

Ketika Anda terhubung sparklyr ke kluster synapse spark dengan method = "synapse", Anda dapat menggunakan keduanya sparklyr dan SparkR dalam sesi yang sama dan dengan mudah berbagi data di antara mereka. Anda dapat membuat tabel spark di sparklyr dan membacanya dari SparkR.

# load the sparklyr package
library(sparklyr)

# Create table in `sparklyr`
mtcars_sparklyr <- copy_to(sc, df = mtcars, name = "mtcars_tbl", overwrite = TRUE, repartition = 3L)

# Read table from `SparkR`
mtcars_sparklr <- SparkR::sql("select cyl, count(*) as n
from mtcars_tbl
GROUP BY cyl
ORDER BY n DESC")

head(mtcars_sparklr)

Pembelajaran Mesin

Berikut adalah contoh di mana kita gunakan ml_linear_regression() untuk menyesuaikan model regresi linier. Kami menggunakan himpunan data bawaan mtcars , dan melihat apakah kami dapat memprediksi konsumsi bahan bakar mobil (mpg) berdasarkan beratnya (wt), dan jumlah silinder yang dikandung mesin (cyl). Kami berasumsi dalam setiap kasus bahwa hubungan antara mpg dan masing-masing fitur kami linier.

Menghasilkan himpunan data pengujian dan pelatihan

Gunakan pemisahan, 70% untuk pelatihan dan 30% untuk menguji model. Bermain dengan rasio ini menghasilkan model yang berbeda.

# split the dataframe into test and training dataframes

partitions <- mtcars_tbl %>%
  select(mpg, wt, cyl) %>% 
  sdf_random_split(training = 0.7, test = 0.3, seed = 2023)

Melatih model

Latih model Regresi Logistik.

fit <- partitions$training %>%
  ml_linear_regression(mpg ~ .)

fit

Sekarang gunakan summary() untuk mempelajari lebih lanjut tentang kualitas model kami, dan signifikansi statistik dari masing-masing prediktor kami.

summary(fit)

Menggunakan model

Anda dapat menerapkan model pada himpunan data pengujian dengan memanggil ml_predict().

pred <- ml_predict(fit, partitions$test)

head(pred)

Untuk daftar model Spark ML yang tersedia melalui sparklyr kunjungi Referensi - ML

Putuskan sambungan dari kluster Spark

Anda bisa memanggil spark_disconnect() atau memilih tombol Hentikan sesi di atas pita buku catatan mengakhiri sesi Spark Anda.

spark_disconnect(sc)

Pelajari selengkapnya tentang fungsionalitas R: