Apache Spark:在执行期间减少内核数量
问题描述:
有没有办法在运行某个部分期间减少内核/执行程序的数量?我们不想超出最终数据存储区,但需要更多的内核来有效地执行计算工作。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")
答
你可以试试:
toSave.repartition(2).saveTo...
虽然这会带来潜在的昂贵的洗牌。
如果您的商店支持批量更新,您可以拨打foreachPartition
并使用大量数据而不是一次执行某项操作,从而获得更好的性能。
会测试出来。谢谢! – chrislovecnm 2014-09-03 20:45:18
foreachPartition的语法是什么? – chrislovecnm 2014-09-03 20:49:35
http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.rdd.RDD 类似... .foreachPartition {iterator => saveThemAll(iterator)} – 2014-09-03 20:54:56