在使用Spark的机器学习模型时,有时为了方便观看输出数据,我们需要将RDD输出到一个文件中,比如我们需要将预测的label输出到一个文件,这样方便我们观看每一个样本的label。你若是输出到多个文件,看起来很不方便。尤其当你需要把预测的label拷贝原始数据所在的excel表格时,若label输出到多个文件,拷贝也很不方便。
但是saveAstextFile默认是将RDD输出到多个文件的,因此我们需要通过方法coalesce(1)来设置,从而将RDD输出到一个文件中。
yourRDD.coalesce(1).saveAsTextFile("outputPath")
例子
将Kmeans聚类预测的label--predLabel输出到一个文件中
predLabel.coalesce(1).saveAsTextFile("file:///outputPath/cleaned_digit_label")
结果文件如下图,可以看到输出结果中只有一个文件:
另外pyspark中,打印结果时,若不将RDD分区设置为1,打印出来的也不对,比如将文本处理分类的label输出。
截图如下:一个分区的RDD打印出来是正确的,多个分区打印出来是错误的。