0
所以這是我一直在嘗試,我是一個新手在這裏工作與火花!如何在foreach循環中運行sc.textFile()並在其上執行聯合?
我試圖執行此代碼
val ii=sc.parallelize(Seq(("e.txt"),("r.txt"))).foreach{i => sc.textFile(i)}
但我發現了 「空指針異常」
謝謝!
所以這是我一直在嘗試,我是一個新手在這裏工作與火花!如何在foreach循環中運行sc.textFile()並在其上執行聯合?
我試圖執行此代碼
val ii=sc.parallelize(Seq(("e.txt"),("r.txt"))).foreach{i => sc.textFile(i)}
但我發現了 「空指針異常」
謝謝!
您可以將多個文件添加到sc.textFile
。您不應該在地圖操作中使用sc
。 map
函數將分發給不同的執行者,並且sc
居住在驅動程序中。因此它會拋出一個Nullpointer異常。
a.txt contents:
a.txt:line1
a.txt:line2
b.txt contents:
b.txt:line1
b.txt:line2
星火允許你在相同的操作添加更多的文件:
scala> sc.textFile("a.txt,b.txt").collect()
res1: Array[String] = Array(a.txt:line1, a.txt:line2, b.txt:line1, b.txt:line2)
希望這有助於和有樂趣星火!
sc.textFile(「a.txt,b.txt」)。collect()該語法按順序讀取文件,我需要以並行方式執行 –
它將並行執行。如果你打開Spark UI,你會看到創建了兩個任務。當您添加更多文件時,任務數量會增加。 –
謝謝,我會盡快更新 –