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
Microsoft Fabric aboneliği edinin. Alternatif olarak, ücretsiz Microsoft Fabric deneme sürümünekaydolun.
Microsoft Fabricgiriş yapın.
Ana sayfanızın sol alt köşesindeki deneyim değiştiriciyi kullanarak Fabric'e geçiş yapın.
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 synapse
adlı 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)
sparklyr
kullanarak 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)
İlgili içerik
R işlevleri hakkında daha fazla bilgi edinin:
- SparkR Kullanımı
- Tidyverse kullanma
- R kütüphane yönetimi
- R görselleştirme oluşturma
- Eğitimi: avokado fiyat tahmini
- Öğretici: uçuş gecikmesi tahmini