[英]pyspark - multiple input files into one RDD and one output file
我在Python中有一個wordcount,我希望在Spark上運行多個文本文件並獲得一個輸出文件,因此這些單詞在所有文件中都被計算在內。 我嘗試了一些解決方案,例如這里和這里找到的解決方案,但它仍然提供與輸入文件數量相同數量的輸出文件。
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?
提前致謝...
這應該加載匹配模式的所有文件。
rdd = sc.textFile("file:///path/*.txt")
現在,您不需要進行任何聯合 。 你只有一個RDD。
來到你的問題 - why are you getting many output files
。 輸出文件的數量取決於RDD
的partitions
數。 當您運行字數統計邏輯時,您生成的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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.