[英]How can i read all files from a directory and do operations parallelly?
假設我在目錄中有一些文件,並且我想讀取每個文件並從文件(即標題)中提取文件名和第一行以進行驗證。 我們如何在Spark中執行此操作(使用python)。
input_file = sc.textFile(sourceFileDir)
通過sc.textFile()
我們可以並行讀取所有文件,但是使用map,我們可以將任何規則或函數應用於rdd中的每個元素。 我不明白如何使用sc.textFile()
僅獲取文件名和所有文件的一行
目前,我正在使用for循環來滿足這些要求(如上所述)。
files = os.listdir(sourceFileDir)
for x in files:
**operations**
我如何對所有文件進行並行處理,這會節省一些時間,因為目錄中有很多文件。
提前致謝 ..
textFile
不是您想要的。 您應該使用wholeTextFile
。 它創建一個rdd,鍵為FileName,值為內容。 然后,您應用地圖僅獲得第一行:
sc.wholeTextFiles(sourceFileDir).map(lambda x : (x[0], x[1].split('\n')[0]))
這樣,地圖的輸出就是fileName和第一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.