如何使用Spark Streaming配置Fair Scheduler池?

时间:2016-02-27 12:33:50

标签: apache-spark spark-streaming

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

我知道使用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中的打印我可以看到所有池都在工作但它们不尊重分配给它们的优先级。每个池都有自己的数据源,所有这些都以相同的单词/秒速率运行。由于工作负载是相同的,我认为问题出在其他地方,但我看不出它在哪里。

1 个答案:

答案 0 :(得分:0)

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

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

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