pit*_*erd 4 python hadoop mapreduce apache-spark pyspark
我在Python中有一个wordcount,我希望在Spark上运行多个文本文件并获得一个输出文件,所以这些单词在所有文件中都被计算在内.我尝试了一些解决方案,例如这里和这里找到的解决方案,但它仍然提供与输入文件数量相同数量的输出文件.
rdd = sc.textFile("file:///path/*.txt")
input = sc.textFile(join(rdd))
Run Code Online (Sandbox Code Playgroud)
要么
rdd = sc.textFile("file:///path/f0.txt,file:///path/f1.txt,...")
rdds = Seq(rdd)
input = sc.textFile(','.join(rdds))
Run Code Online (Sandbox Code Playgroud)
要么
rdd = sc.textFile("file:///path/*.txt")
input = sc.union(rdd)
Run Code Online (Sandbox Code Playgroud)
不工作.任何人都可以建议如何制作一些输入文本文件的RDD?
提前致谢...
这应该加载匹配模式的所有文件.
rdd = sc.textFile("file:///path/*.txt")
Run Code Online (Sandbox Code Playgroud)
现在,您不需要进行任何联合.你只有一个RDD.
来你的问题 - why are you getting many output files
.输出文件的数量取决于数量partitions
的RDD
.当您运行字数统计逻辑时,您生成的RDD可以有多个分区.如果要将RDD保存为单个文件,请使用coalesce
或repartition
仅包含一个分区.
以下代码适用于示例.
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")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6488 次 |
最近记录: |