Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问RDD[Iterator[scala.xml.Node]]中的各个节点?_Scala_Apache Spark - Fatal编程技术网

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

如何访问RDD[Iterator[scala.xml.Node]]中的各个节点?,scala,apache-spark,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 =>

我有一个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))
scala>t.map(l=>l(0))
:41:错误:迭代器[scala.xml.Node]不接受参数
t、 映射(l=>l(0))
有办法获取单个节点吗?

您不能访问带有数字索引的迭代器;您可以将
slice
next
一起使用,以
i.slice(n,n+1)的形式访问迭代器中的第n个元素。next

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)
valrdd=spark.range(3).rdd.map(=>Iterator(2,3,4))
//rdd:org.apache.spark.rdd.rdd[Iterator[Int]]=MapPartitionsRDD[19]位于map at:23
//访问每个迭代器中的第一个元素
map(l=>l.slice(0,1).next.collect
//res24:Array[Int]=数组(2,2,2)

或者先用
l.toSeq
将其转换为
Seq
,然后通过索引访问它。取决于你将访问多少不同的索引,这是否值得。以及顺序-因为使用
slice
会消耗(部分)迭代器,所以无法再次以相同的方式获得值。