SPARK-SQL - sort排序相关的api大全

news/2023/9/21 21:26:24

排序方法汇总,默认都是升序
sort()

orderBy(),orderBy是基于sort实现的
sortWithinPartitions() 按区排序,分区内有顺序,全局无序

代码示例

import org.apache.spark.api.java.function.ForeachPartitionFunction;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;import java.util.Iterator;public class test_27 {public static void main(String[] args) {SparkSession spark = SparkSession.builder().config("spark.driver.host", "localhost").appName("SortApiTest").master("local").getOrCreate();spark.sparkContext().setLogLevel("ERROR");Dataset<Row> usersDataSet = spark.read().json(Utils.BASE_PATH + "/join/users.json");usersDataSet.show();/*+---+------+--------+|age|userId|userName|+---+------+--------+| 23|     1|    Join|| 23|     3|    Katy|| 21|     4|    Mike|| 45|     2|   Jeffy|| 43|     5|      Av|+---+------+--------+*///1: 按照某个字段或者某种条件对整个Dataset进行排序usersDataSet.sort("age").show();/*+---+------+--------+|age|userId|userName|+---+------+--------+| 21|     4|    Mike|| 23|     3|    Katy|| 23|     1|    Join|| 43|     5|      Av|| 45|     2|   Jeffy|+---+------+--------+*/usersDataSet.sort(usersDataSet.col("age").desc()).show();/*+---+------+--------+|age|userId|userName|+---+------+--------+| 45|     2|   Jeffy|| 43|     5|      Av|| 23|     1|    Join|| 23|     3|    Katy|| 21|     4|    Mike|+---+------+--------+*///orderBy是基于sort实现的usersDataSet.orderBy("age").show();/*+---+------+--------+|age|userId|userName|+---+------+--------+| 21|     4|    Mike|| 23|     3|    Katy|| 23|     1|    Join|| 43|     5|      Av|| 45|     2|   Jeffy|+---+------+--------+*/usersDataSet.orderBy(usersDataSet.col("age").desc()).show();/*+---+------+--------+|age|userId|userName|+---+------+--------+| 45|     2|   Jeffy|| 43|     5|      Av|| 23|     1|    Join|| 23|     3|    Katy|| 21|     4|    Mike|+---+------+--------+*///强制分2个区Dataset<Row> coalesceDataset = usersDataSet.repartition(2);System.out.println(coalesceDataset.rdd().getNumPartitions());//打印每个区的内容,方便查看coalesceDataset.foreachPartition(new ForeachPartitionFunction<Row>() {@Overridepublic void call(Iterator<Row> iterator) throws Exception {while (iterator.hasNext()) {Row next = iterator.next();System.out.println(next);}System.out.println("########################");}});/*[23,1,Join][21,4,Mike][43,5,Av]########################[23,3,Katy][45,2,Jeffy]########################*///Dataset在每一个分区内按照某个字段或者条件排序coalesceDataset.sortWithinPartitions("age").show();/*+---+------+--------+|age|userId|userName|+---+------+--------+| 21|     4|    Mike|| 23|     1|    Join|| 43|     5|      Av|| 23|     3|    Katy|| 45|     2|   Jeffy|+---+------+--------+*/coalesceDataset.sortWithinPartitions(coalesceDataset.col("age").desc()).show();/*+---+------+--------+|age|userId|userName|+---+------+--------+| 43|     5|      Av|| 23|     1|    Join|| 21|     4|    Mike|| 45|     2|   Jeffy|| 23|     3|    Katy|+---+------+--------+*/spark.stop();}
}

 


https://www.jiucaihua.cn/news/show-18306.html

相关文章

Java 8 新特性Lambda 表达式

Java 8 新特性Lambda 表达式一、常用循环二、匿名内部类三、排序集合四、循环打印对象五、根据条件修改六、排序七、求和八、统计方法九、材料一、常用循环 public class Spring3 {public static void main(String[] args) {String[] atp {"yuanGe","daWei&qu…

MySQL创建定时任务

MySQL创建定时任务一、简介1、开启事件计划二、创建事件1、循环定时任务2、定时任务3、修改事件4、删除事件5、两种任务方式三、应用案例一、简介 自MySQL5.1.6起&#xff0c;增加了一个非常有特色的功能-事件调度器&#xff08;Event Scheduler&#xff09;&#xff0c;可以用…

hdu 4657 Find Permutation

思路&#xff1a;用一个数组index[]存放a的下标&#xff0c;初始化令a[i]c[i]index[i]i; 假设当前处理的i&#xff0c;初始时令curi&#xff1b;j为大于i的任意值。每次操作找a[l]c[cur]-b[cur]。 若curl则结束&#xff1b;否则交换a[l]和a[cur]的值以及下标。若l>i,那么结束…

SpringBoot整合lettuce+RedissonSentinel(哨兵模式)

SpringBoot整合lettuceRedissonSentinel&#xff08;哨兵模式&#xff09;一、配置准备1、Pom依赖2、application3、实体类4、测试代码5、效果一、配置准备 哨兵模式安装参考我之前的博客 链接地址 1、Pom依赖 <dependencies><!--redis设置--><dependency>…

C++大数类模板

友情提示&#xff1a;使用该模板的注意了&#xff0c;在大数减法里有一个小错误&#xff0c;导致减法可能会出错 // 原来的写法&#xff0c;将t1.len错写成了len while(t1.a[len - 1] 0 && t1.len > 1) {t1.len--; big--; }// 改正后 while(t1.a[t1.len - 1] 0 &…

matlab 中txt文件(含字符及数值)处理

matlab 中txt文件&#xff08;含字符及数值&#xff09;处理 (2008-08-02 09:45:12) 转载▼标签&#xff1a; 杂谈 分类&#xff1a; matlab及C学习Matlab文件操作及读txt文件ZZ2008-07-11 16:43matlab文件操作文件操作是一种重要的输入输出方式&#xff0c;即从数据文件读取…

HDU 4662 MU Puzzle 数论或者水题

题目链接&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid4662 题目是问目标串能否由MI得到&#xff0c;我们可以逆向思维&#xff0c;目标串能否反过来处理得到MI&#xff0c;所以&#xff0c;首先排除M没有出现或者出现超过一次&#xff0c;或者只出现了一次但没有出…

Linux服务器使用Scp命令将数据拉取和接收到远程服务器

文章目录一、介绍1、命令格式2、命令功能二、从本地服务器复制到远程服务器1、复制文件2、复制文件实践案例3、复制目录4、复制目录实践案例三、从远程服务器复制到本地服务器四、其他1、指定端口一、介绍 1、命令格式 scp [参数] [原路径] [目标路径]2、命令功能 scp是 sec…

Jmeter压测工具入门测试使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录一、jmter的用法1、下载与使用2、创建线程计划和线程组3、添加post请求3、添加get请求二、压测结果的分析一、jmter的用法 1、下载与使用 下载地址 解压缩双击打开…

Linux下使用Crontab定时执行脚本及多种案例

Linux下使用Crontab定时执行脚本及多种案例一、安装与基本语法1、安装2、语法3、时间二、案例1、定时输出任务2、定时清空日志一、安装与基本语法 1、安装 yum -y install vixie-cron yum install crontabs2、语法 crontab -e #: 修改 crontab 文件&#xff0c;如果文件不…