Sparklyr kullanma

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.

sparklyrdplyr gibi diğer tidyverse paketleriyle birlikte kullanılır. Microsoft Fabric, sparklyr ve tidyverse'in en son kararlı sürümünü her ç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 Ekle'yi seçerek mevcut bir göl evi ekleyin veya bir göl evi oluşturun.

Synapse Spark kümesine sparklyr Bağlan

Bağlantı kurmak sparklyr için içinde spark_connect() aşağıdaki bağlantı yöntemini kullanın. mevcut spark oturumuna bağlanmanızı sağlayan adlı synapseyeni bir bağlantı yöntemini destekliyoruz. Oturumun sparklyr başlangıç süresini önemli ölçüde azaltır. Ayrıca bu bağlantı yöntemini açık kaynak sparklyr projesine de katkıda bulunduk. ile method = "synapse"hem hem de sparklyrSparkR aynı oturumda kullanabilir ve aralarında kolayca veri paylaş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)

kullanarak sparklyr, ABFS yolunu kullanarak bir Lakehouse dosyasındaki verileri de writeread kullanabilirsiniz. Bir Lakehouse'ı okumak ve yazmak için önce oturumunuza ekleyin. Not defterinin sol tarafında Ekle'yi 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 ve ARDıNDAN ABFS yolunu kopyala'yı seçin. Bu kodda değiştirmek abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files 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 spark içindeki verileri işlemek için aşağıdakini kullanarak birden çok yöntem sağlar:

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

dplyr komutunu kullanma

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

Spark ile dplyr dplyr kullanma hakkında ek belgeler görmek için Ile Veri 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 R komutlarını bizim için Spark SQL'e çevirin. Sonuçta elde edilen sorguyu görmek için kullanın show_query():

# 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'i yürütmek ve sonucu R veri çerçevesi olarak döndürmek için kullanabilirsinizdbGetQuery():

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 komutu, ft_binarizer() başka bir sütunun değerinin belirli bir eşiğin üzerinde olup olmadığını gösteren yeni bir sütun oluşturulmasını basitleştirir.

Kullanılabilir Spark Özellik Transformatörlerinin tam listesini Reference -FT üzerinden sparklyrbulabilirsiniz.

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

ve arasında sparklyr veri paylaşma SparkR

ilemethod = "synapse" synapse spark kümesine bağlandığınızdasparklyr, hem hem de sparklyrSparkR aynı oturumda kullanabilir ve aralarında kolayca veri paylaşabilirsiniz. içinde sparklyr spark tablosu oluşturabilir ve tablosundan SparkRokuyabilirsiniz.

# 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 kullandığımız ml_linear_regression() bir örnek aşağıda verilmiştır. Yerleşik mtcars veri kümesini kullanırız ve bir arabanın yakıt tüketimini () ağırlığınawt (mpg ) ve motorun içerdiği silindir sayısına () göre tahmin edip etebileceğimizi görürüzcyl. Her durumda ve özelliklerimizin her biri arasındaki mpg ilişkinin doğrusal olduğunu varsayarız.

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

Bölme, eğitim için %70 ve modeli test etme 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ğitme

Lojistik Regresyon modelini eğitme.

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

fit

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

summary(fit)

Modeli kullanma

komutunu çağırarak ml_predict()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 adresini ziyaret edin

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

Spark oturumunuzu sonlandırmak için not defteri şeridinin üst kısmındaki Oturumu durdur düğmesini arayabilir spark_disconnect() veya seçebilirsiniz.

spark_disconnect(sc)

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