簡體   English   中英

pyspark - 將多個輸入文件合並為一個RDD和一個輸出文件

[英]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 輸出文件的數量取決於RDDpartitions數。 當您運行字數統計邏輯時,您生成的RDD可以有多個分區。 如果要將RDD保存為單個文件,請使用coalescerepartition只有一個分區。

以下代碼適用於示例

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM