我正在努力训练"使用在Amazon EMR中的群集中运行的Apache Spark的DecisionTreeClassifier
。即使我可以看到添加了大约50个Executor,并且通过使用SparkSQL查询Postgres数据库并存储在DataFrame中来创建这些功能。
DesisionTree fit
方法需要花费很多时间,即使数据集不是那么大(10.000 db条目,每行有几百个字节)。
我可以看到只有这是一项任务,所以我认为这就是它如此缓慢的原因。
我应该在哪里查找在一项任务中运行的原因?
这是我检索数据的方式吗?
我很抱歉,如果这有点模糊,但我不知道检索数据的代码是否相关,或者它是算法中的参数(虽然我没有在网上找到任何东西),或者是它只是Spark调优?
我很欣赏任何方向!
提前谢谢。
答案 0 :(得分:1)
Spark依赖于数据位置。似乎所有数据都位于一个地方。因此spark使用单个分区来处理它。您可以应用重新分区或说明您希望在加载时使用的分区数。我还会查看决策树Api,看看你是否可以专门为它设置分区数。 基本上,分区是您的并行度。