我的工作分为两部分:
- 第一部分使用 Spark 从 HBase 检索数据
- 第二部分计算大量 CPU 密集型机器学习算法
问题是,由于执行器/核心数量较多,HBase 集群的查询过于频繁,这可能会导致生产不稳定。 由于执行器/核心太少,机器学习计算需要很长时间才能执行。
由于执行器和核心的数量是在启动时设置的,我想知道是否有办法减少作业第一部分的执行器数量。
我显然希望避免运行两个单独的作业,就像 Hadoop 在这两个步骤之间使用强制磁盘序列化所做的那样。
感谢您的帮助
最佳答案
我猜dynamic allocation就是您正在寻找的。这也可以与 Spark Streaming 一起使用。
我认为您可能还需要稍微调整一下 RDD 大小,以平衡数据摄取和数据处理,但根据您的实际用例,这可能确实具有挑战性。
关于java - Spark - 在执行期间更改并行度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41644035/