是否有办法在运行的某个部分期间减少核心/执行程序的数量。我们不想超越最终数据存储区,但需要更多内核才能有效地进行计算工作。
基本上
// 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")
答案 0 :(得分:2)
您可以尝试:
toSave.repartition(2).saveTo...
虽然这将带来潜在的昂贵洗牌。
如果您的商店支持批量更新,您可以通过调用foreachPartition
并使用一大块数据而不是一次执行某些操作来获得更好的性能。