MLlib模型(RandomForestModel)使用大量小镶木地板文件保存模型

时间:2016-01-30 19:32:46

标签: apache-spark parquet apache-spark-mllib

我尝试使用RandomForest.trainRegressor API训练MLlib RandomForestRegression模型。

训练结束后,当我尝试保存模型时,生成的模型文件夹在磁盘上的大小为6.5MB,但数据文件夹中有1120个小镶木地板文件似乎是不必要的,上传/下载到s3的速度很慢。

这是预期的行为吗?我确实将labeledPoints重新划分为1分区,但无论如何都会发生这种情况。

1 个答案:

答案 0 :(得分:0)

在培训前使用rdd.repartition(1)重新分区并没有多大帮助。它使得训练可能更慢,因为所有并行操作都是有效顺序的,因为整个并行化的东西都是基于分区的。

而不是我提出简单的黑客并将spark.default.parallelism设置为1,因为保存过程使用sc.parallelize方法来创建要保存的流。

请注意,它会影响您应用中的无数个地方,例如groupByjoin。我的建议是提取模型的训练和保存以分离应用程序并单独运行它。