2016-02-27 48 views
0

我想用不同的Fair Scheduler pools执行不同的Spark Streaming作业。我正在玩Spark GitHub存储库中的NetworkWordCount示例。我将其修改为运行3个池,其权重分别为1,5,10。如何使用Spark Streaming配置Fair Scheduler池?

我知道使用Spark Streaming需要使用workaround将作业分配给特定池,因此我以这种方式修改了代码:

wordCounts.foreachRDD(rdd => 
     rdd.sparkContext.setLocalProperty("spark.scheduler.pool", poolName) 
    ) 
    wordCounts.foreachRDD(rdd => 
     println(rdd.sparkContext.getLocalProperty("spark.scheduler.pool")) 
    ) 
    wordCounts.print() 

从第二foreachRDD打印我可以看到,所有的池工作,但他们不尊重分配给它们的优先级。每个池都有自己的数据源,并且它们全部以相同的字数/秒运行。由于工作量相同,我认为问题在其他地方,但我无法看到它在哪里。

回答

0

认为你需要mapprint之前分配池(使用本地属性),即

wordCounts.map(RDD => rdd.sparkContext.setLocalProperty(“spark.scheduler.pool “,poolName))。print()

您也可以使用ssc.sparkContext来设置池。

相关问题