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]. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |