2016-05-17 68 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