我正在汇总数据,并希望将结果保存在HDFS中。我的最终结果只有6行和2列的数据。但是,当我将其保存到HDFS时,它可以保存200多个文件;我假设是某种类型的预处理。当我查看文件时,它们也都是空白的。
results = aggregate.filter(aggregate["count"] > 2500)
results.show()
+--------------+-----+
| c_ip|count|
+--------------+-----+
| 198.51.100.61| 2619|
| 203.0.113.33| 2635|
|198.51.100.211| 2668|
|198.51.100.121| 2723|
|198.51.100.176| 2518|
| 198.51.100.16| 2546|
+--------------+-----+
results.write.format("csv").save("/sparkcourse/results")
如何保存到HDFS,以便获得包含这些结果的文件?显然,这些数据适用于一个文件。
我尝试的另一件事是使用.collect(),但随后它将我的数据转换为列表,并且无法通过该选项获取任何内容。
results = aggregate.filter(aggregate["count"] > 2500).collect()
答案 0 :(得分:0)
Spark 只要处理中出现
因此,您的问题的解决方案是使用coalesce(1)
函数,以便一个工作节点写入this answer
results.coalesce(1).write.format("csv").save("/sparkcourse/results")
或者您可以使用repartition(1)
作为
results.repartition(1).write.format("csv").save("/sparkcourse/results")