Spark排序方式集锦
一.简介
spark中的排序一般可以使用orderBy或sort算子,可以结合负号、ASC/DESC和col进行简单排序、二次排序等情况
二.代码实现
package big.data.analyse.sparksql
import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SparkSession
/**
* 排序
* Created by zhen on 2019/8/14.
*/
object DateFrameSort {
Logger.getLogger("org").setLevel(Level.WARN)
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().appName("DateFrameSort").master("local[2]").getOrCreate()
val data = Array((7, 2, 3), (1, 8, 6), (1, 8, 3), (4, 5, 9))
val df = spark.createDataFrame(data).toDF("col1", "col2", "col3")
println("===原始数据===")
df.show()
println("===按照col1,col2进行默认排序===")
// 默认的升序,会按照列的先后顺序进行升序排序
df.orderBy("col2", "col3").show()
println("===按照-df(col1)进行升序排序===")
/**
* 此排序方式需要提前创建好df,不能在创建df时使用
*/
df.orderBy(-df("col2")).show
println("===按照df(col1).asc,df(col2).desc进行二次排序===")
/**
* 二次排序
* -号和desc/asc不能在一块使用
*/
df.orderBy(df("col1").asc,df("col2").desc).show
println("===asc/desc排序方法===")
/**
* 使用desc等算子需要预先导入
*/
import org.apache.spark.sql.functions._
df.orderBy(asc("col2")).show
spark.createDataFrame(data).toDF("col1", "col2", "col3").orderBy(desc("col2")).show
df.orderBy(asc("col2"), desc("col3")).show
/**
* sort函数和orderBy用法类似
*/
df.sort(desc("col2")).show
println("===col组合asc/desc排序方法===")
df.orderBy(-col("col2")).show
df.orderBy(col("col2").desc).show
/**
* 第二列无效
* -号和desc/asc不能在一个orderBy使用
*/
df.orderBy(col("col2").desc, -col("col3")).show
spark.stop()
}
}
三.结果






Spark排序方式集锦的更多相关文章
- 浅析SQL查询语句未显式指定排序方式,无法保证同样的查询每次排序结果都一致的原因
本文出处:http://www.cnblogs.com/wy123/p/6189100.html 标题有点拗口,来源于一个开发人员遇到的实际问题 先抛出问题:一个查询没有明确指定排序方式,那么,第二次 ...
- C#中Dictionary<TKey,TValue>排序方式
自定义类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...
- 使用prompt输入一句英文句子和排序方式(升/降),将所有单词按排序方式排序后在网页上输出
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [MySQL] 字符集和排序方式
字符串类型 MySQL的字符串分为两大类: 1)二进制字符串:即一串字节序列,对字节的解释不涉及字符集,因此它没有字符集和排序方式的概念 2)非二进制字符串:由字符构成的序列,字符集用来解释字符串的内 ...
- discuz 修改亮剑积分商城2.91模板(在常用设置中添加商场首页排序方式的背景颜色)
在应用 -> 积分商城 -> 常用设置 中添加 商场首页排序方式 的背景颜色修改功能 步骤: 1.找到并打开此页面对应的模板source\plugin\aljsc\template\set ...
- PHP 二维数组根据某个字段按指定排序方式排序
/** * 二维数组根据某个字段按指定排序方式排序 * @param $arr array 二维数组 * @param $field string 指定字段 * @param int $sort_or ...
- TreeSet的两种排序方式,含Comparable、Comparator
1.排序的引入 由于TreeSet可以实现对元素按照某种规则进行排序,例如下面的例子 public class TreeSetDemo { public static void main(String ...
- 使用jdk中提供的排序方式
package com.bjpowernode.t01; import java.util.Arrays; /** * 使用jdk中提供的排序方式 * */public class TestArray ...
- java学习-排序及加密签名时数据排序方式
排序有两种 1. 类实现comparable接口调用List.sort(null)或Collections.sort(List<T>)方法进行排序 jdk内置的基本类型包装类等都实现了Co ...
随机推荐
- (HK1-2)海康相机直接连接电脑不经过路由器设置
解决电脑无法通过网线直连海康摄像机的问题 https://blog.csdn.net/u014552102/article/details/86708371 一.现象: 通过博主的另外一篇博客h ...
- ESP8266 LUA脚本语言开发: 准备工作-官网获取LUA固件
前言 这节咱去官网上获取lua开发的固件. 官网下载 下面是我以前写的,咱不使用官网下载的固件,咱使用自己编译的固件.. 填写好自己的的邮箱地址,然后选择好自己需要的功能,一会编译好的固件就会发到您的 ...
- Input输入框内容限制
该文百度的嘻嘻,原文:Input输入框内容限制 输入大小写字母.数字.下划线: <input type="text" onkeyup="this.value=thi ...
- nuxt中localstorage的替代方案
采用异步的方式进行存储数据,更高效快速,使用localforage是你最好的选择 具体转载自博客 Heap Stack Blog(pingbook.top) Nuxt storage data in ...
- python 之类的继承
#类的继承 class As1(): def As2(self): print("he11...") class As2(As1): def As2(self): print(&q ...
- [BUAA软工]团队贡献分博客
Gamma阶段贡献分 Beta阶段贡献分 Alpha阶段贡献分 (博客最后部分) 复制过来: Alpha阶段 名字 角色 具体的可衡量的可验证的贡献 zpj PM,后端开发 博客X3 65 commi ...
- 第10课 面向对象的增强(default/delete、override/final)
一.default和delete关键字 (一)编译器提供的“缺省函数” 1.类的成员函数:构造/析构函数.复制构造/复制赋值函数.移动构造/移动赋值函数. 2. 类的全局默认操作函数:operator ...
- Xcode一个project多个target
project添加target https://blog.csdn.net/vbirdbest/article/details/53466009 https://www.cnblogs.com/Bob ...
- C语言学习系列笔记
1.小甲鱼 C语言教程系列
- idea git使用记录
ps:记录idea中git的使用过程 在IntelliJ IDEA使用.gitignore插件的方法和作用 在IntelliJ IDEA使用.gitignore插件的方法和作用 idea git st ...