【发布时间】:2017-03-27 10:18:12
【问题描述】:
我正在接收我想保存在 S3 中的流数据myDStream (DStream[String])以防万一)。
以下代码运行良好,但它保存名称为jsonFile-19-45-46.json 的文件夹,然后在文件夹中保存文件_SUCCESS 和part-00000。
是否可以将每个 RDD[String](这些是 JSON 字符串)数据保存到 JSON 文件,而不是文件夹中?我以为repartition(1) 一定要搞这个把戏,但它没有。
myDStream.foreachRDD { rdd =>
// datetimeString = ....
rdd.repartition(1).saveAsTextFile("s3n://mybucket/keys/jsonFile-"+datetimeString+".json")
}
【问题讨论】:
-
请参阅how to make saveAsTextFile NOT split output into multiple file?,了解它为何如此运作以及如何处理。
-
@hoyland:我检查了这个线程,建议使用
coalesce(1,true)。我尝试了这个解决方案,但我仍然得到带有SUCCESS和part00000的文件夹,而不是 json 文件。就我而言,我知道每个 RDD 的大小会相对较小。
标签: scala apache-spark spark-streaming