pyspark-一个RDD和一个输出fi中有多个输入文件

2024-05-02 10:54:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中有一个wordcount,我想在Spark上运行它,它包含多个文本文件,并得到一个输出文件,因此单词在所有文件中都被计算在内。我尝试了一些解决方案,例如找到了herehere,但它仍然提供与输入文件相同数量的输出文件。

rdd = sc.textFile("file:///path/*.txt")
input = sc.textFile(join(rdd))

或者

rdd = sc.textFile("file:///path/f0.txt,file:///path/f1.txt,...")
rdds = Seq(rdd)
input = sc.textFile(','.join(rdds))

或者

rdd = sc.textFile("file:///path/*.txt")
input = sc.union(rdd)

不要工作。有谁能提出一个解决方案,如何使几个输入文本文件的一个RDD?

提前谢谢。。。


Tags: 文件pathtxtinputhere解决方案wordcountspark
1条回答
网友
1楼 · 发布于 2024-05-02 10:54:11

这将加载与模式匹配的所有文件。

rdd = sc.textFile("file:///path/*.txt")

现在,您不需要进行任何联合。你只有一个RDD。

来问你的问题-why are you getting many output files。输出文件的数量取决于RDDpartitions的数量。运行字计数逻辑时,生成的RDD可以有多个分区。如果要将RDD保存为单个文件,请使用coalescerepartition来只有一个分区。

下面的代码有效,取自Examples

rdd = sc.textFile("file:///path/*.txt")
counts = rdd.flatMap(lambda line: line.split(" ")) \
...              .map(lambda word: (word, 1)) \
...              .reduceByKey(lambda a, b: a + b)

counts.coalesce(1).saveAsTextFile("res.csv")

相关问题 更多 >