如何并行化和新闻出版总署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开始,在所有工人安装包。

这篇文章有用吗?