spark学习12之利用keyBy对数据中其中两项进行排序
2016-05-19 16:41
696 查看
更多代码请见:https://github.com/xubo245/SparkLearning
1解释
由于有时候数据的列数很多,不只是按一项作为key来排序,有时候需要对其中两项进行排序,spark的RDD提供了keyBy的方法。使用场景例子为:
init:
(ab,2,3)
(ac,4,100)
(bb,1,200)
(ac,1,1)
(bb,2,5)
sort:
(ab,2,3)
(ac,1,1)
(ac,4,100)
(bb,1,200)
(bb,2,5)
2.代码:
3.结果:
参考
【1】http://spark.apache.org/docs/1.5.2/mllib-guide.html
【2】http://spark.apache.org/docs/1.5.2/mllib-collaborative-filtering.html#collaborative-filtering
【3】https://github.com/xubo245/SparkLearning
1解释
由于有时候数据的列数很多,不只是按一项作为key来排序,有时候需要对其中两项进行排序,spark的RDD提供了keyBy的方法。使用场景例子为:
init:
(ab,2,3)
(ac,4,100)
(bb,1,200)
(ac,1,1)
(bb,2,5)
sort:
(ab,2,3)
(ac,1,1)
(ac,4,100)
(bb,1,200)
(bb,2,5)
2.代码:
package org.bdgenomics.adam.test import org.apache.spark.{SparkContext, SparkConf} import org.bdgenomics.adam.instrumentation.Timers._ /** * Created by xubo on 2016/5/19. */ object KeyBySuite { def main(args: Array[String]) { keybyTest() } def keybyTest() = SortReads.time { val conf = new SparkConf().setAppName(this.getClass().getSimpleName().filter(!_.equals('$'))).setMaster("local[4]") val sc = new SparkContext(conf) // val rdd1 = sc.parallelize(Array(("a", 2, 3), ("b", 2, 5), ("a", 4, 100), ("b", 1, 200), ("a", 1, 1))) val rdd1 = sc.parallelize(Array(("ab", 2, 3), ("bb", 2, 5), ("ac", 4, 100), ("bb", 1, 200), ("ac", 1, 1))) val rdd2 = rdd1.keyBy(each => (each._1, each._2)).sortByKey() println("init:") rdd1.foreach(println) println("keyby not zipWithIndex:") rdd2.foreach(println) println("keyby value:") rdd2.map(_._2).foreach(println) println("zipWithIndex:") val rdd3 = rdd1.keyBy(each => (each._1, each._2)).sortByKey().map(_._2).collect().zipWithIndex rdd3.foreach(println) println("sort:") rdd3.map(_._1).foreach(println) sc.stop } }
3.结果:
init: (ab,2,3) (ac,4,100) (bb,1,200) (ac,1,1) (bb,2,5) keyby not zipWithIndex: ((ab,2),(ab,2,3)) ((ac,4),(ac,4,100)) ((bb,2),(bb,2,5)) ((bb,1),(bb,1,200)) ((ac,1),(ac,1,1)) keyby value: (bb,2,5) (ac,4,100) (ab,2,3) (ac,1,1) (bb,1,200) zipWithIndex: ((ab,2,3),0) ((ac,1,1),1) ((ac,4,100),2) ((bb,1,200),3) ((bb,2,5),4) sort: (ab,2,3) (ac,1,1) (ac,4,100) (bb,1,200) (bb,2,5)
参考
【1】http://spark.apache.org/docs/1.5.2/mllib-guide.html
【2】http://spark.apache.org/docs/1.5.2/mllib-collaborative-filtering.html#collaborative-filtering
【3】https://github.com/xubo245/SparkLearning
相关文章推荐
- 常用正则表达式匹配模式
- TCP洪水攻击(SYN Flood)的诊断和处理
- 编译内核报错:<command-line>:0: warning: missing terminating " character
- 【转】Mac用户必备!100多款免费实用的苹果Mac软件大搜集
- Android-完全退出当前应用程序的四种方法
- Java中引用与内存空间分配
- HDP各端口申请
- RadioGroup的使用
- mysql连接字符串,大小写不敏感查询
- 四海众联E350N水滴吸顶AP适配说明
- apache activemq start Address already in use
- iOS面试题整理带答案
- Android Drawable Resources系列5:<level-list>
- .what is difference between NSNotification and protocol? 通知和协议的不同之处?
- ElasticSearch(六)-映射和分析过程
- CentOS-6.3安装配置JDK-7
- 使用linux系统的实用命令总结
- Xshell远程连接Linux时无法使用小键盘的解决方式
- CentOS删除svn版本库
- 关于SpringMVC返回date的格式问题