2016-05-17 63 views
1

我的輸入設置的樣子如下:火花如何在地圖分裂和迭代每個元素

100,Jack,CEO,10000,IT 
101,John,CEO,20000,CS 

我想要分割每行並打印火花使用現有的API的所有列。

JavaRDD<Object> splitRdd = textFileRDD.map(x -> x.split(",")); 

我如何迭代並打印所有值

回答

4

我認爲你可以做到這樣:

JavaRDD<String> p = textFileRDD.flatMap(x -> Arrays.asList(x.split(","))); 
p.foreach(x -> System.out.println(x)); 

這將打印所有colums。

+0

嗯......,將打印每個值在單獨的行,而不是保持同一行的價值觀,但也許這就是OP在尋找什麼? –

+0

yup ..但你回答是在斯卡拉我猜..我正確嗎?/ – Aman

+0

是的,你是正確的:)但轉換到Java應該是微不足道的。 –

5

因此,如果您在實際的分佈式環境(具有多臺機器的羣集)中運行,則需要先調用collect,然後在收集的結果上調用println。否則,它將簡單地打印到羣集的不同機器上的stdout上,並且您不會在驅動程序上看到它。如果您只在本地運行,則可以使用foreach,因爲所有內容都將寫入相同的stdout。

在集羣上火花外殼,我會做:

textFileRDD.map(line => line.split(",")).collect.foreach(array => println(array.mkString(","))) 

這將輸出這樣的:

100,Jack,CEO,10000,IT 
101,John,CEO,20000,CS