spark如何在map中拆分并迭代每个元素

时间:2016-05-17 06:13:12

标签: apache-spark

我的输入设置如下所示:

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

我想分割每一行并使用spark中的现有api打印所有列。

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

如何迭代并打印所有值

2 个答案:

答案 0 :(得分:5)

因此,如果您在实际的分布式环境(具有许多计算机的群集)中运行,则需要先调用collect,然后在收集的结果上调用println。否则它将被简单地打印到群集的不同机器上的stdout,并且您不会在驱动程序上看到它。如果您只在本地运行,则可以使用foreach,因为所有内容都将写入同一个标准输出。

在群集上的Spark-shell中,我会这样做:

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

将输出:

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

答案 1 :(得分:4)

我认为你可以这样做:

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

这将打印所有列。