Apache Spark:在执行期间减少核心数量

时间:2014-09-03 19:11:53

标签: apache-spark

是否有办法在运行的某个部分期间减少核心/执行程序的数量。我们不想超越最终数据存储区,但需要更多内核才能有效地进行计算工作。

基本上

// want n cores here
val eventJsonRdd: RDD[(String,(Event, Option[Article]))] = eventGeoRdd.leftOuterJoin(articlesRdd)

val toSave =  eventJsonRdd.map(processEventsAndArticlesJson)

// want two cores here
toSave.saveToEs("apollobit/events")

1 个答案:

答案 0 :(得分:2)

您可以尝试:

toSave.repartition(2).saveTo...

虽然这将带来潜在的昂贵洗牌。

如果您的商店支持批量更新,您可以通过调用foreachPartition并使用一大块数据而不是一次执行某些操作来获得更好的性能。