Nasıl yapılır? paralel hale getirmek R Code gapply

R kodu sürücü ve R verileri üzerinde çalıştığı için R Code paralelleştirme zordur. çerçeveler dağıtılmadı. Genellikle, yerel olarak çalıştırılan ve Apache Spark üzerinde çalışacak şekilde dönüştürülen var olan R kodu vardır. Diğer durumlarda, gelişmiş istatistiksel analizler ve makine öğrenimi teknikleri için kullanılan bazı mini r işlevleri dağıtılmış bilgi işlem desteği vermeyebilir. Bu gibi durumlarda, bir küme genelinde istenen iş yükünü dağıtmak için parlak r UDF API 'SI kullanılabilir.

Örnek kullanım örneği: bir anahtara göre gruplandırılan bir veri kümesinin alt kümelerinde bir makine öğrenimi modeli eğitme yapmak istiyorsunuz. Verilerin alt kümeleri çalışanlara sığacak ise, aynı anda birden çok modeli eğitebilmeniz için, Mini-mini r UDF API 'sini kullanmak daha verimli olabilir.

gapplyVe gapplyCollect Işlevleri Spark veri çerçevesindeki her gruba bir işlev uygular. Spark veri çerçevesindeki her grup için:

  1. Her grubu R Data. Frame olarak toplayın.
  2. İşlevi çalışana gönderin ve yürütün.
  3. Şemayı, şema tarafından belirtilen şekilde sürücüye döndürün.

Not

gapplyÖğesini çağırdığınızda, çıkış şemasını belirtmeniz gerekir. İle gapplyCollect , sonuç, çıkış Için R Data. Frame kullanılarak sürücüye toplanır.

Aşağıdaki örnekte, ayrı bir destek vektör makinesi modeli her ayın verilerine uygun hale getirir airquality . Çıktı, her ay için sonuç olarak ve şema belirtilmeden birlikte gösterilen bir veri. Frame.

df <- createDataFrame(na.omit(airquality))

schema <- structType(
  structField("Month", "MSE"),
  structField("integer", "Number"))

result <- gapply(df, c("Month"), function(key, x) {
  library(e1071)
  data.frame(month = key, mse = svm(Ozone ~ ., x, cross = 3)$tot.MSE)
}, schema)
df <- createDataFrame(na.omit(airquality))

gapplyCollect(df, c("Month"), function(key, x) {
  library(e1071)
  y <- data.frame(month = key, mse = svm(Ozone ~ ., x, cross = 3)$tot.MSE)
 names(y) <- c("Month", "MSE")
  y
})

Not

Spark veri çerçevesiyle başlayın ve paketleri tüm çalışanlara yükler.