一.简介

  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排序方式集锦的更多相关文章

  1. 浅析SQL查询语句未显式指定排序方式,无法保证同样的查询每次排序结果都一致的原因

    本文出处:http://www.cnblogs.com/wy123/p/6189100.html 标题有点拗口,来源于一个开发人员遇到的实际问题 先抛出问题:一个查询没有明确指定排序方式,那么,第二次 ...

  2. C#中Dictionary<TKey,TValue>排序方式

    自定义类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...

  3. 使用prompt输入一句英文句子和排序方式(升/降),将所有单词按排序方式排序后在网页上输出

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. [MySQL] 字符集和排序方式

    字符串类型 MySQL的字符串分为两大类: 1)二进制字符串:即一串字节序列,对字节的解释不涉及字符集,因此它没有字符集和排序方式的概念 2)非二进制字符串:由字符构成的序列,字符集用来解释字符串的内 ...

  5. discuz 修改亮剑积分商城2.91模板(在常用设置中添加商场首页排序方式的背景颜色)

    在应用 -> 积分商城 -> 常用设置 中添加 商场首页排序方式 的背景颜色修改功能 步骤: 1.找到并打开此页面对应的模板source\plugin\aljsc\template\set ...

  6. PHP 二维数组根据某个字段按指定排序方式排序

    /** * 二维数组根据某个字段按指定排序方式排序 * @param $arr array 二维数组 * @param $field string 指定字段 * @param int $sort_or ...

  7. TreeSet的两种排序方式,含Comparable、Comparator

    1.排序的引入 由于TreeSet可以实现对元素按照某种规则进行排序,例如下面的例子 public class TreeSetDemo { public static void main(String ...

  8. 使用jdk中提供的排序方式

    package com.bjpowernode.t01; import java.util.Arrays; /** * 使用jdk中提供的排序方式 * */public class TestArray ...

  9. java学习-排序及加密签名时数据排序方式

    排序有两种 1. 类实现comparable接口调用List.sort(null)或Collections.sort(List<T>)方法进行排序 jdk内置的基本类型包装类等都实现了Co ...

随机推荐

  1. 用纯真ip数据库.dat文件查询ip归属

    网址:http://www.cz88.net/ 下载安装后,有这个文件: 安装路径/ip/qqwry.dat 创建实例的时候吧这个文件路径传入,即可调用. /** * 从纯真IP地址库查询ip归属 * ...

  2. 洛谷P2504 [HAOI2006]聪明的猴子题解

    题目 记录悲伤 已知猴子的数量以及猴子跳的最大距离 已知数的数量以及树的坐标 最小生成树 每两棵树之间的距离需要枚举来计算 算出最大值之后再与n只猴子进行比较记录答案 需要注意 在使用最小生成树的时候 ...

  3. 使用 AI 绘制箭头

    参考下面教程 有空再整理 https://jingyan.baidu.com/article/7082dc1cd77899e40b89bd5a.html http://www.360doc.com/c ...

  4. python总结七

    1.lpython是python语言的lisp前端,它类似于普通的lisp语言,他会被直接编译成字节码. 2.python中的变量只在哪里需要设置内部变量,在__init__函数中. 3.map()会 ...

  5. 某邀请赛misc key家用完整版

    目录 题目下载 提示 解题过程 1.提取RGB值 2.找到key 3.循环异或,得到flag 反思 题目下载 题目名:key 提示 提取钥匙中特殊颜色的RGB循环异或KEY值 解题过程 1.提取RGB ...

  6. YYCache 的整体架构类图

  7. pyenv和pipenv简单使用

    一.安装pyenv 安装pyenv $ git clone git://github.com/yyuu/pyenv.git ~/.pyenv $ echo 'export PYENV_ROOT=&qu ...

  8. Git/SVN提交代码规范

    feat - 新功能 feature fix - 修复 bug docs - 文档注释 style - 代码格式(不影响代码运行的变动) refactor - 重构.优化(既不增加新功能,也不是修复b ...

  9. 【转】JavaScript 高性能数组去重

    原文地址:https://www.cnblogs.com/wisewrong/p/9642264.html 一.测试模版 数组去重是一个老生常谈的问题,网上流传着有各种各样的解法 为了测试这些解法的性 ...

  10. SQLServer ---------- 附加数据库,以及解决附加时出现错误

    附加数据库的目的,进行数据库的转移,将需要的数据库,进行转移,软件在部署的时候,会经常使用 附加识别的数据库文件后缀是:  .mdf 方法: 1.首先把准备好的数据库文件,放到需要还原数据库的的电脑上 ...