Spark:Java实现 二次排序

本文介绍了如何在Spark中使用Java实现二次排序。通过创建一个自定义的key类,该类实现了Ordered接口和Serializable接口,以支持对多个列进行排序。首先,将原始文本数据映射为包含自定义key和文本的JavaPairRDD,然后利用sortByKey算子进行排序。最后,再次映射以移除自定义key,保留排序后的文本行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试数据

1 5
2 4
3 6
1 3
2 1

输出结果

1 3
1 5
2 1
2 4
3 6 

实现思路:

1.实现自定义的key,要实现Ordered接口和Serializable接口,在key中实现自己对多个列的排序算法
2.将包含文本的RDD,映射成key为自定义key,value为文本的JavaPariRDD
3.使用sortByKey算子按照自定义的key进行排序
4.再次映射,剔除自定义的key,而只保留文本行

自定义的key:SecondarySortKey_12

package cn.spark.study.core;

import java.io.Serializable;

import scala.math.Ordered;

/**
 * 自定义的二次排序key
 * @author Administrator
 *
 */
public class SecondarySortKey_12 implements Ordered<SecondarySortKey_12>,Serializable{

    private static final long serialVersionUID = 1L;

//首先在自定义的key里面,定义需要进行排序的列
private int first;
private int second;

public SecondarySortKey_12(int first, int second) {
    this.first = first;
    this.second = second;
}

@Override
public boolean $greater(SecondarySortKey_12 other) {
    if(this.first > other.getFirst()){
        return true;
    }
    else if (
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值