我有一个
的RDDt: 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))
有没有办法获得个别节点?
答案 0 :(得分:1)
您无法使用数字索引访问 Iterator ;您可以slice
与next
一起使用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)