scala.math.Ordering

自定义排序方法。

例:(col : Int, row : Int, Value : Double )是一个Tuple3。排序默认按第一项作为Key。

Ordering.by[(Int,Int,Double),Int](_._2)表示从Tuple3转到Int型。后面为转换函数。此句表示按此Tuple3中第二个元素进行排序。

Ordering.by[T,U]( f(T) => U ).为此方法声明原型。

文档中声明为:def by[T, S](f: (T) ⇒ S)(implicit ord: Ordering[S]): Ordering[T]

提供自定义类型转换函数入口,可自定义Tuple排序、对象排序、以及转换不同类型间排序。但一般情况下,排序规则要符合常识。最好不要出现类似1>2的排序规则,以免引起误解和产生不必要的错误。

spark RDD 中,有max方法。默认按第一元素为key。

声明为:def max()(implicit ord: Ordering[T]): T。

max方法本身没有参数!写成rdd.max(ord),编译无法通过。正确写法rdd.max()(ord)。

返回类型为rdd中元素的类型。如需其中部分数据,不要忘记再进行相应处理。

eg.

val rows = data.max()(Ordering.by[(Int,Int,Double),Int](_._2))._2.toInt

获取data(RDD)中元素的第二项中最大值。

简记之。

转载于:https://www.cnblogs.com/suanec/p/4999805.html

scala Ordering相关推荐

  1. 人工智能算法之梯度下降法、协同过滤、相似度技术、ALS算法(附案例分析)、模型存储与加载、推荐系统的冷启动问题

    梯度下降法 求解机器学习算法的模型参数,即无约束优化问题时,梯度下降法是最常采用的方法之一,另一种常用的方法是最小二乘法.这里对梯度下降法做简要介绍. 最小二乘法法适用于模型方程存在解析解的情况.如果 ...

  2. Spark RDD常用算子使用总结

    文章目录 概述 Transformation(转换算子) 1. map 2. flatMap 3. filter 4. mapPartitions 5. mapPartitionsWithIndex ...

  3. Scala比较器:Ordered与Ordering

    在项目中,我们常常会遇到排序(或比较)需求,比如:对一个Person类 case class Person(name: String, age: Int) {override def toString ...

  4. scala 排序接口Ordering

    Ordering 特质入门简介 排序是一种trait,其每个实例代表一种对类型实例进行排序的策略. trait Ordering[T] extends Comparator[T] with Parti ...

  5. scala排序——ordering vs ordered

    在最近探索scala的过程中,发现一个比较重要的问题,那就是排序,排序在业务代码中还是很常见的,最常用的排序就是对集合调用sorted[B >: A](implicit ord: Orderin ...

  6. Scala 集合入门

    1. 数组 1.1 定长数组 scala.Array 是定长的可变的索引型集合, JVM 中, Scala 的 Array 是以 Java 数组方式实现. String 对应 java.lang.St ...

  7. Scala’s parallel collections

    2019独角兽企业重金招聘Python工程师标准>>> Scala 2.9 introduced parallel collections, which mirror most of ...

  8. Scala:Enumeration

    2019独角兽企业重金招聘Python工程师标准>>> Scala:Enumeration scala的枚举的声明,与Java中声明有很大区别,Scala的枚举值有些特殊,它的关键是 ...

  9. Scala堆的方式进行Spark topK词频查询(根据value进行TreeMap排序)

    本文来自:http://blog.csdn.net/liangyihuai/article/details/54925737 本文使用了两种方法进行spark 的top k词频查询,第一种方法在很多博 ...

最新文章

  1. Centos6.3下利用changepassword修改samba账户密码
  2. Android Studio Emulator 提示 “/dev/kvm is not found” 解决办法
  3. 如何使用图形界面Webmin管理linux服务器
  4. 自己架设手机网游_起来,不愿做网游的奴隶!
  5. 不允许输入特殊字符的正则表达式_JavaScript正则表达式常用技巧
  6. 视觉中国网站部分恢复上线? 官方回应:并没有
  7. 批量获取ip运营商_关于获取运营商的IP地址
  8. 4G模块使用记录移远EC20、BC20
  9. 华为 “OSPF” 多区域配置
  10. Iplimage设置感兴趣区域(ROI)
  11. android SDK 开发心得笔记
  12. Sql根据身份证计算年龄和时间范围的条件查询
  13. 曾经用过的书生配置文档
  14. c语言试卷大全,C语言试题库(完整版)试题.doc
  15. VC++6.0如何找到“丢失”的对话框控件工具箱
  16. 一个90后程序员,需要养活几个过重阳节的老人?
  17. 广告收入7年来首次下滑,千万粉UP主4个月无商单,自媒体还能好好恰饭吗?
  18. 美团一面--后台开发
  19. 小样本不符合正态_抽样检验到底需要多少样本,你真的知道吗?
  20. Linux——gdb调试时多进程切换方法(attach/follow-fork-mode)

热门文章

  1. 怎样才能在自动驾驶任务中高效地利用时间轴上的信息进行视频检测?
  2. 你还在担心开车看不到路标吗?我这这有个路标分类的来玩玩啊(有源码有数据集)
  3. mysql trigger 有时 不执行_Mysql 寒假刷题TIPs
  4. abp mysql .net core_ABP .Net Core Entity Framework迁移使用MySql数据库
  5. 联想微型计算机电脑黑屏怎么做系统,联想电脑黑屏怎么办 5种方法轻松排除黑屏故障...
  6. matlab算出中心差分方法_方差分析、T检验、卡方分析如何区分?
  7. 小程序中 swiper设置圆角在真机上不显示问题
  8. JZOJ5918【NOIP2018模拟10.20】Car
  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)...
  10. Flutter TextButton 详细使用配置、Flutter ButtonStyle样式概述实践