Aracılığıyla paylaş


Sparklyr'i kullan

sparklyr Apache Spark için bir R arabirimidir. Tanıdık R arabirimlerini kullanarak Spark ile etkileşime geçmek için bir mekanizma sağlar. Spark toplu iş tanımları aracılığıyla veya etkileşimli Microsoft Fabric not defterleriyle sparklyr kullanabilirsiniz.

sparklyr, dplyrgibi diğer tidyverse paketleriyle birlikte kullanılır. Microsoft Fabric, sparklyr ve tidyverse'in en son kararlı sürümünü her yeni çalışma zamanı sürümüyle dağıtır. Bunları içeri aktarabilir ve API'yi kullanmaya başlayabilirsiniz.

Önkoşullar

  • Not defterini açın veya oluşturun. Nasıl yapılacağını öğrenmek için bkz. Microsoft Fabric not defterlerini kullanma.

  • Birincil dili değiştirmek için dil seçeneğini SparkR (R) olarak ayarlayın.

  • Not defterinizi bir göle ekleyin. Sol tarafta, mevcut bir göl evi eklemek veya bir göl evi oluşturmak için ekle'yi seçin.

Sparklyr'ı Synapse Spark kümesine bağlama

sparklyr bağlantı kurmak için spark_connect()'de aşağıdaki bağlantı yöntemini kullanın. mevcut bir Spark oturumuna bağlanmanızı sağlayan synapseadlı yeni bir bağlantı yöntemini destekliyoruz. sparklyr oturumunun açılış süresini önemli ölçüde azaltır. Ayrıca, bu bağlantı yöntemini açık kaynaklı sparklyr projesinekatkıda bulunduk. method = "synapse"ile aynı oturumda hem sparklyr hem de SparkR kullanabilir ve aralarında kolayca veripaylaşabilirsiniz.

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

Verileri okumak için sparklyr kullanma

Yeni Spark oturumu veri içermiyor. İlk adım, Spark oturumunuzun belleğine veri yüklemek veya Spark'ı isteğe bağlı olarak verilere erişebilmesi için verilerin konumuna getirmektir.

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

sparklyrkullanarak ABFS yolunu kullanıp bir Lakehouse dosyasındaki veriler üzerinde write ve read işlemlerini de gerçekleştirebilirsiniz. Bir Lakehouse'ı okumak ve yazmak için önce oturumunuza ekleyin. Defterin sol tarafındaki Ekle seçeneğini seçerek mevcut bir Lakehouse ekleyin veya bir Lakehouse oluşturun.

ABFS yolunuzu bulmak için Lakehouse'unuzda Dosyalar klasörüne sağ tıklayın, ardından ABFS yolunu kopyalaseçin. Bu koddaki abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files değiştirmek için yolunuzu yapıştırın:

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)

Verileri işlemek için sparklyr kullanma

sparklyr kullanarak Spark içindeki verileri işlemek için birden çok yöntem sağlar:

  • dplyr komutları
  • SparkSQL
  • Spark'ın özellik transformatörleri

dplyr kullanma

Spark içindeki verileri hazırlamak için tanıdık dplyr komutlarını kullanabilirsiniz. Komutlar Spark içinde çalıştırıldığından R ile Spark arasında gereksiz veri aktarımları yoktur.

Spark ile dplyr kullanma hakkında ek belgeleri görmek için Verileri dplyr ile Düzenleme'ye tıklayın.

# 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 ve dplyr bizim için R komutlarını Spark SQL'e çevirin. Sonuçta elde edilen sorguyu görmek için show_query()kullanın:

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

SQL kullanma

Spark kümesindeki tablolarda doğrudan SQL sorguları yürütmek de mümkündür. spark_connection() nesnesi Spark için bir DBI arabirimi uygular, böylece SQL yürütmek ve sonucu R veri çerçevesi olarak döndürmek için dbGetQuery() kullanabilirsiniz:

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

Özellik Transformatörlerini Kullanma

Önceki yöntemlerin her ikisi de SQL deyimlerini kullanır. Spark bazı veri dönüşümlerini SQL kullanmadan daha kullanışlı hale getiren komutlar sağlar.

Örneğin, ft_binarizer() komutu, başka bir sütunun değerinin belirli bir eşiğin üzerinde olup olmadığını gösteren yeni bir sütun oluşturmayı basitleştirir.

Reference -FTüzerinden sparklyr aracılığıyla kullanılabilen Spark Özellik Transformatörlerinin tam listesini bulabilirsiniz.

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

sparklyr ile SparkR arasında veri paylaşma

method = "synapse" ile sparklyr synapse spark kümesinebağlandığınızda, aynı oturumda hem sparklyr'ü hem de SparkR'i kullanabilir ve aralarında kolaylıkla veri paylaşabilirsiniz. sparklyr'de bir Spark tablosu oluşturabilir ve SparkR'dan okuyabilirsiniz.

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

Makine öğrenmesi

Doğrusal regresyon modelini sığdırmak için ml_linear_regression() kullandığımız bir örnek aşağıda verilmiştır. Yerleşik mtcars veri kümesini kullanırız ve bir arabanın ağırlığına (wt) ve motorun içerdiği silindir sayısına (cyl) göre yakıt tüketimini (mpg) tahmin edip etebileceğimizi görürüz. Her durumda mpg ile özelliklerimizin her biri arasındaki ilişkinin doğrusal olduğunu varsayarız.

Test ve eğitim veri kümeleri oluşturma

Modelin eğitimi için %70% ve testi için %30% kullanın. Bu oran ile oynamak farklı modellerde sonuç verir.

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

Modeli eğitin

Lojistik Regresyon modelini eğitin.

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

fit

Şimdi modelimizin kalitesi ve tahmincilerimizin istatistiksel önemi hakkında biraz daha fazla bilgi edinmek için summary() kullanın.

summary(fit)

Modeli kullanma

ml_predict()çağırarak modeli test veri kümesine uygulayabilirsiniz.

pred <- ml_predict(fit, partitions$test)

head(pred)

Sparklyr aracılığıyla kullanılabilen Spark ML modellerinin listesi için Başvuru - ML sayfasına göz atın.

Spark kümesi bağlantısını kesme

Spark oturumunuzu sonlandırmak için, spark_disconnect() numarasını arayabilir veya not defteri şeridinin üstündeki Oturumu durdur düğmesini seçebilirsiniz.

spark_disconnect(sc)

R işlevleri hakkında daha fazla bilgi edinin: