Bagikan melalui


Menggunakan sparklyr

Sumber daya sparklyr bahasa R berfungsi sebagai antarmuka ke Apache Spark. Sumber daya sparklr menyediakan mekanisme untuk berinteraksi dengan Spark dengan antarmuka R yang sudah dikenal. Gunakan sparklyr dengan definisi tugas batch Spark atau dengan notebook Microsoft Fabric interaktif.

sparklyr digunakan dengan paket tidyverse lainnya - misalnya, dplyr. Microsoft Fabric mendistribusikan versi stabil terbaru dari sparklyr dan tidyverse dengan setiap kali rilis runtime. Anda dapat mengimpor sumber daya ini 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 (rumah tepi danau). Di sisi kiri, pilih Tambahkan untuk menambah lakehouse yang ada atau untuk membuat lakehouse.

Menyambungkan sparklyr ke kluster Synapse Spark

Metode koneksi fungsi spark_connect() menghasilkan koneksi sparklyr. Fungsi ini membangun metode koneksi baru bernama synapse, yang terhubung ke sesi Spark yang ada. Ini secara signifikan mengurangi waktu mulai sesi sparklyr. Metode koneksi ini tersedia dalam proyek sparklyr sumber terbuka. Dengan method = "synapse", Anda dapat menggunakan sparklyr dan SparkR dalam sesi yang sama, serta dengan mudah berbagi data di antara mereka. Sampel kode sel buku catatan berikut menggunakan spark_connect() fungsi :

# 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. Anda kemudian harus memuat data ke memori sesi Spark Anda, atau mengarahkan Spark ke lokasi data sehingga sesi 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)

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

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

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 berbagai cara untuk memproses data di dalam Spark, dengan:

  • 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, mencegah transfer data yang tidak perlu antara R dan 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

Manipulasi Data dengan dplyr sumber menyediakan informasi lebih lanjut tentang penggunaan dplyr dengan Spark. sparklyr dan dplyr terjemahkan perintah R ke Spark SQL. Gunakan show_query() untuk memperlihatkan kueri yang dihasilkan:

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

Menggunakan SQL

Anda juga dapat 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, tanpa menggunakan SQL. Misalnya, ft_binarizer() perintah menyederhanakan pembuatan kolom baru yang menunjukkan apakah nilai di kolom lain melebihi ambang batas tertentu atau tidak:

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

Sumber daya Reference -FT menawarkan daftar lengkap Transformer Fitur Spark yang tersedia melalui sparklyr.

Berbagi data antara sparklyr dan SparkR

Ketika Anda terhubung sparklyr ke kluster synapse spark dengan method = "synapse", baik sparklyr dan SparkR tersedia dalam sesi yang sama dan dapat dengan mudah berbagi data di antara mereka sendiri. 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

Contoh berikut menggunakan ml_linear_regression() agar sesuai dengan model regresi linier. Model ini menggunakan himpunan data bawaan mtcars untuk mencoba memprediksi konsumsi bahan bakar (mpg) mobil berdasarkan berat (wt) mobil dan jumlah silinder (cyl) mesin mobil. Semua kasus di sini mengasumsikan hubungan linier antara mpg dan masing-masing fitur kami.

Menghasilkan himpunan data pengujian dan pelatihan

Gunakan pemisahan - 70% untuk pelatihan dan 30% - untuk menguji model. Perubahan pada rasio ini menyebabkan 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

Gunakan summary() untuk mempelajari lebih lanjut tentang kualitas model kami, dan signifikansi statistik dari setiap prediktor kami:

summary(fit)

Gunakan model

Panggilan ml_predict() untuk menerapkan model ke himpunan data pengujian:

pred <- ml_predict(fit, partitions$test)

head(pred)

Kunjungi Referensi - ML untuk daftar model Spark ML yang tersedia melalui sparklyr.

Putuskan sambungan dari kluster Spark

Panggil spark_disconnect(), atau pilih tombol Hentikan sesi di atas pita buku catatan, untuk mengakhiri sesi Spark Anda:

spark_disconnect(sc)

Pelajari selengkapnya tentang fungsionalitas R: