使用javaAPI(使用到对象排序)


数据:

3 1
5 2
6 5
8 123
1 4
4 123
5 432
3 54
5 121
8 654
3 98

代码:

package ddd;import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import scala.Tuple2;/*** @author George* @description**/
public class SecondSort {public static void main(String[] args) {SparkConf conf = new SparkConf().setAppName("ss").setMaster("local");JavaSparkContext sc = new JavaSparkContext(conf);JavaRDD<String> tf = sc.textFile("./data/secondSort.txt");JavaPairRDD<SecondSortKey, String> map = tf.mapToPair(new PairFunction<String, SecondSortKey, String>() {@Overridepublic Tuple2<SecondSortKey, String> call(String s) throws Exception {String[] strings = s.split(" ");int first = Integer.parseInt(strings[0]);int second = Integer.parseInt(strings[1]);SecondSortKey secondSortKey = new SecondSortKey(first, second);return new Tuple2<>(secondSortKey, s);}});map.sortByKey(false).foreach(new VoidFunction<Tuple2<SecondSortKey, String>>() {@Overridepublic void call(Tuple2<SecondSortKey, String> secondSortKeyStringTuple2) throws Exception {System.out.println(secondSortKeyStringTuple2._2);}});}
}************************************************************************
package ddd;import java.io.Serializable;/*** @author George* @description**/
public class SecondSortKey implements Serializable,Comparable<SecondSortKey> {private int first;private int second;public SecondSortKey() {}public SecondSortKey(int first, int second) {this.first = first;this.second = second;}public int getFirst() {return first;}public void setFirst(int first) {this.first = first;}public int getSecond() {return second;}public void setSecond(int second) {this.second = second;}@Overridepublic int compareTo(SecondSortKey o) {if (this.getFirst() - o.getFirst() == 0){return this.getSecond() - o.getSecond();}else{return this.getFirst()-o.getFirst();}}
}

结果展示:

scalaAPI:

package suanziimport org.apache.spark.{SparkConf, SparkContext}
//
object SecondSort {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setMaster("local").setAppName("SecondSort")val sc = new SparkContext(sparkConf)sc.setLogLevel("error")val rdd = sc.textFile("./data/secondSort.txt")val mapRdd = rdd.map(x => {(new SecondSortKey(x.split(" ")(0).toInt, x.split(" ")(1).toInt), null)})
//    mapRdd.foreach(println)val sortRdd = mapRdd.sortByKey(false)sortRdd.map(_._1).foreach(println)/*** 8 654* 8 123* 6 5* 5 432* 5 121* 5 2* 4 123* 3 98* 3 54* 3 1* 1 4*/sc.stop()}
}
class SecondSortKey(val first:Int,val second:Int) extends Ordered[SecondSortKey] with Serializable{override def compare(that: SecondSortKey): Int = {if (this.first - that.first == 0){this.second - that.second}else{this.first - that.first}}override def toString: String = {this.first + " " +this.second}
}

Spark _13_二次排序问题相关推荐

  1. 数据算法 --hadoop/spark数据处理技巧 --(二次排序问题和TopN问题)

    一.二次排序问题. MR/hadoop两种方案: 1.让reducer读取和缓存给个定键的所有值(例如,缓存到一个数组数据结构中,)然后对这些值完成一个reducer中排序.这种方法不具有可伸缩性,因 ...

  2. [Spark的二次排序的实现]

    二次排序原理 二次排序就是首先按照第一字段排序,然后再对第一字段相同的行按照第二字段排序,注意不能破坏第一次排序的结果. 二次排序技术 假设对应的Key = K有如下值: (K,V1), (K,V2) ...

  3. 2021年大数据Spark(二十七):SparkSQL案例一花式查询和案例二WordCount

    目录 案例一:花式查询 案例二:WordCount 基于DSL编程 基于SQL编程 具体演示代码如下: 案例一:花式查询 package cn.itcast.sqlimport org.apache. ...

  4. 2021年大数据Spark(二十):Spark Core外部数据源引入

    目录 外部数据源 MySQL 数据源 演示代码 HBase 数据源 HBase Sink ​​​​​​​HBase Source 外部数据源 Spark可以从外部存储系统读取数据,比如RDBMs表中或 ...

  5. 学习笔记Spark(二)—— Spark集群的安装配置

    一.我的软件环境 二.Spark集群拓扑 2.1.集群规模 192.168.128.10 master 1.5G ~2G内存.20G硬盘.NAT.1~2核 : 192.168.128.11 node1 ...

  6. 2021年大数据Spark(二十九):SparkSQL案例四开窗函数

    目录 案例四:开窗函数 概述 介绍 聚合函数和开窗函数 开窗函数分类 ​​​​​​​聚合开窗函数 排序开窗函数 ROW_NUMBER顺序排序 ​​​​​​​RANK跳跃排序 ​​​​​​​ DENSE ...

  7. 2021年大数据Spark(二十八):SparkSQL案例三电影评分数据分析

    目录 案例三:电影评分数据分析 代码实现 Shuffle分区数 案例三:电影评分数据分析 使用电影评分数据进行数据分析,分别使用DSL编程和SQL编程,熟悉数据处理函数及SQL使用,业务需求说明: 对 ...

  8. 2021年大数据Spark(二十五):SparkSQL的RDD、DF、DS相关操作

      目录 RDD.DF.DS相关操作 SparkSQL初体验 SparkSession 应用入口 获取DataFrame/DataSet 使用样例类 指定类型+列名 自定义Schema ​​​​​​​ ...

  9. 2021年大数据Spark(二十三):SparkSQL 概述

    目录 SparkSQL 概述 前世今生 Shark 框架-淘汰了 SparkSQL 模块 Hive 与 SparkSQL 官方定义 第一.针对结构化数据处理,属于Spark框架一个部分 第二.抽象数据 ...

最新文章

  1. 加速加速再加速——大数据机器学习模型实践
  2. SQL 2014 in-memory中的storage部分
  3. 【推荐】一款快速预览神器:QuickLook
  4. opencv笔记(3):图像镜像
  5. 文献学习(part26)--Extended Comparisons of Best Subset Selection, Forward Stepwise Selection, and Lasso
  6. javafx如何调节按钮位置_安全带高度调节器的小知识
  7. OpenCV与图像处理学习十二——图像形状特征之HOG特征
  8. 为什么二级菜单会被挡住_父页面弹出菜单被子页面挡住问题
  9. 哪些事情瞬间暴露了你的贫穷?
  10. Fences中关于Explorer非正常关闭问题
  11. simulink enable嵌套问题
  12. 计算机开机其他用户,Win8.1系统下取消开机显示“其他用户”的方法
  13. python笔记(五)
  14. Oracle时间以半小时为单位取整
  15. TopCoder教程
  16. Windows 隐藏小电影?
  17. 2017年杭州职称计算机培训,2017浙江职称计算机考试报名:杭州职称计算机报名入口...
  18. 路由器DNS代理的工作原理介绍
  19. 什么专业可以免考计算机二级,计算机二级证书可以免考自考哪些科目?
  20. 小傻蛋的妹妹跟随小甲鱼学习Python的第二十一节021

热门文章

  1. 运行时动态调用子程序的例子
  2. Active Directory边界
  3. ADO.NET 2.0 功能一览 --作者:Bob Beauchemin
  4. 打包,并自动安装SQL数据库
  5. HDU - 1757 A Simple Math Problem(矩阵快速幂,水题)
  6. AcWing - 171 送礼物(双向dfs)
  7. 沧州学计算机设计大赛,沧职两学子全国工业机器人技能大赛获奖
  8. java 锁的类型_Java锁的种类 - shawnplaying的个人页面 - OSCHINA - 中文开源技术交流社区...
  9. 【网络编程】之一、初识WinSocket
  10. cocos2d-x初探学习笔记(14)--菜单项