如何並行化和新聞出版總署R代碼嗎

學習如何使用新聞出版總署並行化R代碼。

寫的亞當Pavlacka

去年發表在:2022年5月20日

並行R的代碼是很困難的,因為代碼運行在司機和R data.frames沒有分布。通常,有現有的R是本地運行的代碼轉換為運行在Apache火花。在其他情況下,一些SparkR函數用於先進的統計分析和機器學習技術可能不支持分布式計算。在這種情況下,SparkR UDF API可用於跨集群分發所需的工作量。

示例用例:你想訓練一個機器學習模型在一個數據集的子集,分組的關鍵。如果數據的子集適合的工人,這可能是更有效使用SparkR UDF API來訓練多個模型。

新聞出版總署gapplyCollect函數將一個函數應用到每個小組DataFrame火花。為每個組火花DataFrame:

  1. 收集每一組作為一個R data.frame。
  2. 給工人和執行的函數。
  3. 返回結果司機為指定的模式。
刪除

信息

當你打電話新聞出版總署,您必須指定輸出模式。與gapplyCollect收集,結果司機使用R data.frame為輸出。

在接下來的例子中,一個單獨的支持向量機模型是適合的airquality每個月的數據。產生的輸出是一個data.frame MSE為每個月,有或沒有指定模式。

% r df < createDataFrame (na.omit (airquality))模式< - structType (structField(“月”,“MSE”), structField(“整數”,“數量”))結果<——新聞出版總署(df、c(“月”)、功能(鍵,x){圖書館(e1071) data.frame(月=關鍵,MSE = svm(臭氧~。,x,交叉= 3)tot.MSE美元)},模式)
% r df < createDataFrame (na.omit (airquality)) gapplyCollect (df、c(“月”)、功能(鍵,x){圖書館(e1071) y < data.frame(月=關鍵,mse = svm(臭氧~。,x,交叉= 3)tot.MSE美元)名稱(y) < - c(“月”,“mse”) y})
刪除

信息

從火花DataFrame開始,在所有工人安裝包。

這篇文章有用嗎?