并行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)总结(模型)})