Spark 决策树拟合在 1 个任务中运行

Spark Decision tree fit runs in 1 task

我正在尝试 "train" DecisionTreeClassifierAmazon EMR 的集群中使用 Apache Spark 运行。尽管我可以看到添加了大约 50 个执行程序,并且这些功能是通过使用 SparkSQL 查询 Postgres 数据库创建的,并存储在 DataFrame 中。 DesisionTree fit 方法需要很多小时,即使数据集不是那么大(10.000 db 条目,每行有几百个字节)。

我可以看到这只是一项任务,所以我认为这就是它这么慢的原因。

我应该在哪里寻找在一个任务中这是 运行 的原因? 这是我检索数据的方式吗? 很抱歉,如果这有点含糊,但我不知道检索数据的代码是否相关,或者它是算法中的一个参数(虽然我没有在网上找到任何东西),还是只是 Spark 调优? 我将不胜感激!

提前致谢。

Spark 依赖于数据局部性。似乎所有数据都位于一个地方。因此 spark 使用单个分区来处理它。您可以应用重新分区或说明您希望在加载时使用的分区数。我还会查看决策树 Api 并查看是否可以专门为其设置分区数。 基本上,分区是您的并行级别。