scala Ordering
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)中元素的第二项中最大值。
简记之。
scala Ordering的更多相关文章
- Scala比较器:Ordered与Ordering
在项目中,我们常常会遇到排序(或比较)需求,比如:对一个Person类 case class Person(name: String, age: Int) { override def toStrin ...
- Scala比较器---Ordered与Ordering
1.Ordered 和 Ordering Scala提供两个特质(trait)Ordered与Ordering用于比较.其中,Ordered混入(mix)Java的Comparable接口,而Orde ...
- [Scala] 快学Scala A2L2
集合 13.1 集合的三大类 所有的集合都扩展Iterable特质.集合的三大集合为Seq, Set, Map Seq是一个有先后次序的值的序列,比如数组或列表.IndexSeq允许我们通过整型下表快 ...
- Scala HandBook
目录[-] 1. Scala有多cool 1.1. 速度! 1.2. 易用的数据结构 1.3. OOP+FP 1.4. 动态+静态 1.5. DSL 1.6 ...
- 第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析
今天学业习了上下文界定的内容,看下这段代码 class Pair_Ordering[T:Ordering](val first : T,val second : T){ def bigger(imp ...
- Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- Scala 深入浅出实战经典 第47讲:Scala多重界定代码实战及其在Spark中的应用
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala 深入浅出实战经典 第45讲: scala中context bounds代码实例
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala Collection简介
Traversable vs Iterable Traversable, Iterable 都是trait. Iterable 继承 Traversable. Traversable: 支持forea ...
随机推荐
- linux下java环境配置
非常简单的三行命令就搞定了! $ sudo add-apt-repository ppa:webupd8team/java$ sudo apt-get update$ sudo apt-get ins ...
- iOS 钥匙串 指纹识别 get和Post请求的区别
01-钥匙串 1. 通过系统提供的钥匙串功能可以在本地保存密码,系统使用AES的方式对密码加密 a. 查看Safari中保存的密码 2. 使用第三方框架SSKeychain把密码保存到钥匙串和获取钥匙 ...
- -webkit-text-size-adjust
ios使用-webkit-text-size-adjust禁止调整字体大小 body{-webkit-text-size-adjust: 100%!important;} android使用以下代码, ...
- EventBus的使用,数据传递
通常情况下安卓下数据的传递有下面几种方法: 1.通过intent传递,包括显式意图和隐式意图,广播(Broadcast)和服务都能通过Intent传递 传递的数据类型包括8大基本数据类型 实现P ...
- AndroidTips:解决Dialog全屏显示以及Dialog显示自动弹出输入法
继承实现一个dialog,并在onCreate里面做处理. @Override protected void onCreate(Bundle savedInstanceState) { s ...
- mac OS X操作 -- 常用
显示/隐藏默认隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true/false 重置ROOT密码: http://www. ...
- John the Ripper
John the RipperJohn the Ripper(简称John)是一款著名的密码破解工具.它主要针对各种Hash加密的密文.它不同于Rainbow Table方式.它采用实时运算的方式和密 ...
- spring4 mvc 出错
java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetada ...
- Redis入门指南
随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...
- JavaScript无缝滚动
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...