Bagikan melalui


Menggunakan 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 tugas batch Spark atau menggunakan notebook Microsoft Fabric interaktif.

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

Prasyarat

  • Dapatkan langganan Microsoft Fabric . Atau, daftar untuk uji coba Microsoft Fabric gratis.

  • Masuk ke Microsoft Fabric.

  • Gunakan pengalih pengalaman di sisi kiri bawah halaman beranda Anda untuk beralih ke Fabric.

    Cuplikan layar menu pengalih pengalaman, memperlihatkan tempat untuk memilih Ilmu Data.

  • 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 menambah lakehouse yang ada atau untuk membuat lakehouse.

Menyambungkan sparklyr ke kluster Synapse Spark

Gunakan metode koneksi berikut di spark_connect() untuk membuat koneksi sparklyr. Kami mendukung metode koneksi baru yang disebut synapse, yang memungkinkan Anda untuk terhubung ke sesi Spark yang ada. Ini secara signifikan mengurangi waktu mulai sesi sparklyr. Selain itu, kami menyumbangkan metode koneksi ini ke proyek sparklyr sumber terbuka . Dengan method = "synapse", Anda dapat menggunakan sparklyr dan SparkR 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 sparklyrAnda juga dapat write dan read data dari file Lakehouse menggunakan path ABFS. Untuk membaca dan menulis ke Lakehouse, pertama-tama tambahkan Lakehouse tersebut ke sesi Anda. Di sisi kiri buku catatan, pilih Tambahkan untuk menambahkan Lakehouse yang sudah ada atau membuat 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:

  • perintah dplyr
  • SparkSQL
  • Transformer fitur Spark

Gunakan dplyr

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

Klik Memanipulasi 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 menerjemahkan perintah R ke Spark SQL untuk kami. Untuk melihat kueri yang dihasilkan, gunakan show_query():

# 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 spark_connection() mengimplementasikan 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, perintah ft_binarizer() 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 menyambungkan sparklyr ke kluster Synapse Spark dengan method = "synapse", Anda dapat menggunakan sparklyr dan SparkR dalam sesi yang sama serta mudah berbagi data di antara keduanya. 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 menggunakan ml_linear_regression() agar sesuai dengan model regresi linier. Kami menggunakan himpunan data mtcars bawaan, 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 pembagian 70% untuk melatih model dan 30% untuk mengujinya. 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 sedikit lebih lanjut tentang kualitas model kami, dan signifikansi statistik dari masing-masing prediktor kami.

summary(fit)

Gunakan 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 menghubungi spark_disconnect() atau memilih tombol Hentikan sesi di atas pita notebook untuk mengakhiri sesi Spark Anda.

spark_disconnect(sc)

Pelajari selengkapnya tentang fungsionalitas R: