Paralelizace kódu R s využitím spark.lapply

Paralelismus jazyka R je obtížné, protože kód R běží na ovladači a datech R. snímky nejsou distribuovány. Často existuje existující kód R, který se spouští místně a který se převádí na běh na Apache Spark. V jiných případech některé funkce Sparku používané k pokročilým analytickým analýzám a technikům strojového učení nemusí podporovat distribuované výpočetní prostředí. V takových případech je možné k distribuci požadovaných úloh v rámci clusteru použít rozhraní API pro systém souborů Spark.

Příklad případu použití: Chcete proškolit více modelů strojového učení pro stejná data, například pro ladění parametrů technologie Hyper-v. Pokud se datová sada vejde na jednotlivé pracovní procesy, může být efektivnější používat rozhraní API pro zakládání na více verzích modelu současně.

spark.lapplyFunkce umožňuje provádět stejnou úlohu na více pracovních procesech spuštěním funkce přes seznam prvků. Pro každý prvek v seznamu:

  1. Odeslat funkci pracovnímu.
  2. Spusťte funkci.
  3. Vrátí výsledek všech pracovních procesů jako seznam do ovladače.

V následujícím příkladu je model podpory vektorového počítače vhodný pro iris datovou sadu se 3 přeloženými křížovým ověřováním, zatímco náklady se liší od 0,5 do 1 po přírůstcích 0,1. Výstupem je seznam s přehledem modelů různých parametrů nákladů.

library(SparkR)

spark.lapply(seq(0.5, 1, by = 0.1), function(x) {
  library(e1071)
  model <- svm(Species ~ ., iris, cost = x, cross = 3)
  summary(model)
})

Poznámka

Balíčky je nutné nainstalovat na všechny pracovní procesy.