我的输入设置如下所示:
100,Jack,CEO,10000,IT
101,John,CEO,20000,CS
我想分割每一行并使用spark中的现有api打印所有列。
JavaRDD<Object> splitRdd = textFileRDD.map(x -> x.split(","));
如何迭代并打印所有值
答案 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));
这将打印所有列。