首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找火花中的“for循环”替代方案

寻找火花中的“for循环”替代方案
EN

Stack Overflow用户
提问于 2018-04-25 03:40:16
回答 1查看 1K关注 0票数 2

我试图使用sparklyr对模型进行调优。使用for循环来调优参数并不像预期的那样并行化,而且花费了大量的时间。

我的问题:

有什么可以替代的方法来并行工作吗?

代码语言:javascript
复制
id_wss <- NA

for (i in 2:8)

{
  id_cluster <- ml_kmeans(id_ip4, centers = i, seed = 1234, features_col = colnames(id_ip4))

  id_wss[i] <- id_cluster$cost
}
EN

回答 1

Stack Overflow用户

发布于 2018-04-25 10:54:25

当涉及到并发性时,代码没有什么特别的错误:

  • 分布式并行部分是模型拟合过程ml_kmeans(...)。因为循环不会影响到这一点。每个模型都将按照预期使用集群上可用的资源进行培训。
  • 外部循环是一个驱动程序代码。在正常情况下,我们使用标准的单线程代码(而不是这个级别的多线程实际上是一个选项R)。 通常(Scala、Python、Java)可以使用单独的线程同时提交多个Spark作业,但实际上它需要大量的调优和对低级别API的访问。即使是在那里,也很少值得大惊小怪,除非你已经大大超过了集群的支配能力。

尽管如此,请记住,如果您将Spark -指的是内存中的数据与本地实现进行比较,事情将相对缓慢。使用随机初始化might help speed things up

代码语言:javascript
复制
ml_kmeans(id_ip4, centers = i, init_mode = "random", 
          seed = 1234, features_col = colnames(id_ip4))

此外,还可以使用一个可用的评估器(ml_binary_classification_evaluatorml_multiclass_classification_evaluatorml_regression_evaluator)对算法进行评估,您可以使用ml_cross_validator / ml_train_validation_split代替手动循环(例如,参见How to train a ML model in sparklyr and predict new values on another dataframe?)。

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

https://stackoverflow.com/questions/50013717

复制
相关文章

相似问题

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