首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SparkR 2.0.0进行并行、分布式处理

使用SparkR 2.0.0进行并行、分布式处理
EN

Stack Overflow用户
提问于 2017-04-07 00:26:39
回答 1查看 493关注 0票数 1

我刚接触Spark,并在RServer上尝试使用Hadoop 2.0.0,这是一个SparkR边缘节点。创建和查询DataFrames很好。但这里有一个问题,我想看看它是如何工作的。

给定一个项目,我需要查询外部数据源的相关数据,通过一些ML库调用进行机器学习,并转储结果。我需要在大约500个项目上进行学习。显然,我希望使用所有可用的工作节点上的所有CPU,以便可以并行运行500个ML。我注意到在开源R上原生ML调用不会花费太多时间来为项的数据集运行算法(通常大约10000行-总共需要1分钟来获取数据、运行ML并交付我需要的结果)。

请注意,我并没有调用Spark的ML。但是我想看看我是否可以只使用spark进行分布式并行计算,看看我可以多快地学习。另一种选择是加载Spark DataFrame中的所有500项,并让Spark来决定如何在分区的DataFrame上运行ML。但这是一个单独的努力和研究,以比较与多个,并行和分布式运行的mini MLs (每个项目1个)的执行情况。

问:我们如何在Spark R中调用parallelize?我是否必须使用callJmethod传递项目的SparkDataFrame并调用每个项目的函数调用?或者,有没有更好的方法来并行化我的项集合并对每个项进行函数调用(就像并行的dApply)?任何建议/帮助我都很感谢。

很抱歉发了这么长的帖子。我是Spark的新手,似乎有Scala/Java/R和Python方法,可能R方法仅限于我还没有跟上的其他方法。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-06-09 18:03:37

你试过spark.lapply函数(link -> spark.lapply)了吗?基本上,它使用spark作为资源提供者,而不是用于“大数据”处理的工具。如果你的500个项目的数据可以在内存中处理,你可以创建一个有500个元素的列表(每个元素都有相应的数据+一些其他的东西,比如超参数),并将它和适当的函数一起传递给spark.lapply (就像一些机器学习模型)。Spark应该做的是类似于并行包的事情(在worker节点上打开单独的RSessions,分发计算并将结果返回给驱动程序)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43260786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档