Apache Spark (Scala) - 打印 RDD / pairRDD 的 1 个条目
Apache Spark (Scala) - print 1 entry of an RDD / pairRDD
在使用 RDD 时,我已按 Key 对 RDD 中的项目进行了分组。
val pairRDD = oldRDD.map(x => (x.user, x.product)).groupByKey
pairRDD
的类型为:RDD(Int, Iterable[Int]))
我遇到的问题只是访问特定元素。当我似乎无法通过密钥访问 RDD 中的项目时,拥有密钥有什么意义?
此时我 filter
将 RDD 缩减为单个项目,但我仍然有一个 RDD,因此我必须在 RDD 上执行 foreach
以将其打印出来:
val userNumber10 = pairRDD.filter(_._1 == 10)
userNumber10.foreach(x => println("user number = " + x._1))
或者,我可以 filter
RDD 然后 take(1)
其中 returns 一个大小为 1 的数组:
val userNumber10Array = pairRDD.filter(_._1 == 10).take(1)
或者我可以 select 返回数组的第一个元素:
val userNumber10Array = pairRDD.filter(_._1 == 10).take(1)(0)
哪个 returns 我根据需要配对。但...
显然,这很不方便,我会冒昧地猜测说这不是 RDD 的使用方式!
你可能会问我为什么要这样做!好吧,它出现的原因是因为我只是想 "see" 我的 RDD 中的内容用于我自己的测试目的。那么,有没有一种方法可以访问 RDD(更严格地说是 pairRDD)中的单个项目?如果可以,如何访问?如果不是,pairRDD 的目的是什么?
使用属于PairRDDFunctions
的lookup
函数。来自官方文档:
Return the list of values in the RDD for key key. This operation is
done efficiently if the RDD has a known partitioner by only searching
the partition that the key maps to.
https://spark.apache.org/docs/0.8.1/api/core/org/apache/spark/rdd/PairRDDFunctions.html
如果您只想查看 RDD 的内容,只需调用 collect
。
在使用 RDD 时,我已按 Key 对 RDD 中的项目进行了分组。
val pairRDD = oldRDD.map(x => (x.user, x.product)).groupByKey
pairRDD
的类型为:RDD(Int, Iterable[Int]))
我遇到的问题只是访问特定元素。当我似乎无法通过密钥访问 RDD 中的项目时,拥有密钥有什么意义?
此时我 filter
将 RDD 缩减为单个项目,但我仍然有一个 RDD,因此我必须在 RDD 上执行 foreach
以将其打印出来:
val userNumber10 = pairRDD.filter(_._1 == 10)
userNumber10.foreach(x => println("user number = " + x._1))
或者,我可以 filter
RDD 然后 take(1)
其中 returns 一个大小为 1 的数组:
val userNumber10Array = pairRDD.filter(_._1 == 10).take(1)
或者我可以 select 返回数组的第一个元素:
val userNumber10Array = pairRDD.filter(_._1 == 10).take(1)(0)
哪个 returns 我根据需要配对。但... 显然,这很不方便,我会冒昧地猜测说这不是 RDD 的使用方式!
你可能会问我为什么要这样做!好吧,它出现的原因是因为我只是想 "see" 我的 RDD 中的内容用于我自己的测试目的。那么,有没有一种方法可以访问 RDD(更严格地说是 pairRDD)中的单个项目?如果可以,如何访问?如果不是,pairRDD 的目的是什么?
使用属于PairRDDFunctions
的lookup
函数。来自官方文档:
Return the list of values in the RDD for key key. This operation is done efficiently if the RDD has a known partitioner by only searching the partition that the key maps to.
https://spark.apache.org/docs/0.8.1/api/core/org/apache/spark/rdd/PairRDDFunctions.html
如果您只想查看 RDD 的内容,只需调用 collect
。