2017-02-22 65 views
0

我正在kafka运行一个spark直接流,我需要运行许多并发作业以便及时处理所有数据。在spark中,您可以将spark.streaming.concurrentJobs设置为要运行的多个并发作业。Spark Direct Stream并发作业限制

我想知道的是确定在给定环境中可以运行多少个并行作业的逻辑方法。对于我公司的隐私问题,我无法告诉你我拥有的规格,但我想知道哪些规格与确定限制有关,为什么?

当然,替代方案是我可以继续增加和测试,然后根据结果进行调整,但我想要一个更合理的方法,并且我想实际了解什么决定了限制以及为什么。

回答

1

要测试不同数量的并发作业并查看总体执行时间是最可靠的方法。然而,我想最好的数字大致等于Runtime.getRuntime().availableProcessors();

所以我的建议是从可用处理器的数量开始,然后增加和减少1,2和3.然后制作一个图表(执行时间与工作数量相比),你会看到最佳的工作数量。

+0

我用你的建议打印出'Runtime.getRuntime()。availableProcessors();'。我收到的数字远远高于我需要的数字,但知道我的上限是很好的。经过无数测试后,我找到了一个合理的数字。谢谢。 – user3124181