如何访问RDD [Iterator [scala.xml.Node]]中的各个节点?

时间:2017-11-05 18:23:58

标签: scala apache-spark

我有一个

的RDD
t: org.apache.spark.rdd.RDD[Iterator[scala.xml.Node]] = MapPartitionsRDD[23]

当使用下面的map访问单个节点时,我收到错误

scala> t.map(l => l(0))

<console>:41: error: Iterator[scala.xml.Node] does not take parameters
              t.map(l => l(0))

有没有办法获得个别节点?

1 个答案:

答案 0 :(得分:1)

您无法使用数字索引访问 Iterator ;您可以slicenext一起使用i.slice(n,n+1).next来访问迭代器中的 nth 元素:

val rdd = spark.range(3).rdd.map(_ => Iterator(2,3,4))
// rdd: org.apache.spark.rdd.RDD[Iterator[Int]] = MapPartitionsRDD[19] at map at <console>:23

// to access the first element in each iterator
rdd.map(l => l.slice(0,1).next).collect
// res24: Array[Int] = Array(2, 2, 2)