我尝试使用RandomForest.trainRegressor API训练MLlib RandomForestRegression模型。
训练结束后,当我尝试保存模型时,生成的模型文件夹在磁盘上的大小为6.5MB,但数据文件夹中有1120个小镶木地板文件似乎是不必要的,上传/下载到s3的速度很慢。
这是预期的行为吗?我确实将labeledPoints重新划分为1分区,但无论如何都会发生这种情况。
答案 0 :(得分:0)
在培训前使用rdd.repartition(1)
重新分区并没有多大帮助。它使得训练可能更慢,因为所有并行操作都是有效顺序的,因为整个并行化的东西都是基于分区的。
而不是我提出简单的黑客并将spark.default.parallelism
设置为1
,因为保存过程使用sc.parallelize
方法来创建要保存的流。
请注意,它会影响您应用中的无数个地方,例如groupBy
和join
。我的建议是提取模型的训练和保存以分离应用程序并单独运行它。