並行R的代碼是很困難的,因為代碼運行在司機和R data.frames沒有分布。通常,有現有的R是本地運行的代碼轉換為運行在Apache火花。在其他情況下,一些SparkR函數用於先進的統計分析和機器學習技術可能不支持分布式計算。在這種情況下,SparkR UDF API可用於跨集群分發所需的工作量。
示例用例:你想訓練多個機器學習模型在相同的數據,例如超參數調優。如果數據集符合每個工人,它可能是更有效使用SparkR UDF API來訓練模型的幾個版本。
的spark.lapply功能使您能夠執行相同的任務在多個工人,通過運行一個函數在一個元素的列表。對於列表中的每個元素:
- 函數發送給一個工人。
- 執行函數。
- 返回結果的所有工人司機列表。
在接下來的例子中,支持向量機模型是適合的虹膜三倍交叉驗證數據集,而成本是不同的從0.5至0.1 1的增量。輸出是一個列表的總結各種成本模型參數。
% r圖書館(SparkR) spark.lapply (seq(0.5, 1 = 0.1),函數(x){圖書館(e1071)模型< - svm(物種~,虹膜,成本= x,交叉= 3)總結(模型)})