加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 关于Spark的RDD的take和takeOrdered方法

发布时间:2020-12-16 09:51:13 所属栏目:安全 来源:网络整理
导读:我对Spark的rdd.take(n)和rdd.takeOrdered(n)如何工作有点困惑.有人可以用一些例子向我解释这两种方法吗?谢谢. 解决方法 为了解释排序是如何工作的,我们创建了一个整数从0到99的RDD: val myRdd = sc.parallelize(Seq.range(0,100)) 我们现在可以执行: myR
我对Spark的rdd.take(n)和rdd.takeOrdered(n)如何工作有点困惑.有人可以用一些例子向我解释这两种方法吗?谢谢.

解决方法

为了解释排序是如何工作的,我们创建了一个整数从0到99的RDD:

val myRdd = sc.parallelize(Seq.range(0,100))

我们现在可以执行:

myRdd.take(5)

我将提取RDD的前5个元素,我们将获得一个数组[Int]包含myRDD的前5个整数:’0 1 2 3 4 5′(没有排序函数,只有前5个元素中的前5个元素)位置)

takeOrdered(5)操作以类似的方式工作:它将RDD的前5个元素作为Array [Int]提取,但我们必须有机会指定排序条件:

myRdd.takeOrdered(5)( Ordering[Int].reverse)

将根据指定的顺序提取前5个元素.在我们的例子中,结果将是:’99 98 97 96 95′

如果您的RDD中有更复杂的数据结构,您可能希望通过以下操作执行自己的排序功能:

myRdd.takeOrdered(5)( Ordering[Int].reverse.on { x => ??? })

这将根据您的自定义排序函数将RDD的前5个元素提取为Array [Int].

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读