Spark Decision tree fit 在单任务中运行

我正在尝试使用在Amazon EMR集群上运行的Apache Spark来“训练”一个DecisionTreeClassifier。尽管我能看到大约有50个执行器被添加,并且特征是通过使用SparkSQL查询Postgres数据库并存储在一个DataFrame中创建的,但即使数据集不大(10,000个数据库条目,每行只有几百字节),DecisionTree的fit方法仍然需要几个小时才能完成。

我注意到这项任务只有一个任务,因此我认为这是导致速度慢的原因。

我应该从哪里查找导致它在一个任务中运行的原因?是因为我检索数据的方式吗?我很抱歉这个问题可能有点模糊,但我不知道检索数据的代码是否相关,或者是算法中的某个参数(尽管我在网上没有找到相关信息),还是只是Spark的调优问题?我非常希望能得到一些指导!

提前感谢您。


回答:

Spark依赖于数据本地性。看起来所有数据都位于一个地方。因此,Spark使用单个分区来处理它。你可以应用重新分区,或者在加载时指定你想要使用的分区数量。我还会查看决策树API,看看是否可以专门为它设置分区数量。基本上,分区是你并行处理的级别。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注