一.简介

  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. Windows WoW64浅析

    WOW64(Windows-On-Windows 64bit)是X64 Windows操作系统的一个子系统,为32位应用程序提供运行环境.类似的还有WOW32子系统,负责在32位Windows系统上运 ...

  2. 搜索法 | 1091bfs搜索:三维bfs

    首先我们来理解样例输入: 尺寸:3行4列5片   阈值:2 1 1 1 1 1 1 1 1 1 1 1 1 ------- 0 0 1 1 0 0 1 1 0 0 1 1 ------- 0 1 1 ...

  3. servlet生成json数据返回至Ajax

    一.JSON JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标 ...

  4. node.js 路由详解

    路由的基本使用 第一步:获取url跟目录下的字符 var http = require('http'); var url = require('url') http.createServer(func ...

  5. [Usaco2012 Feb] Cow Coupons

    [Usaco2012 Feb] Cow Coupons 一个比较正确的贪心写法(跑得贼慢...) 首先我们二分答案,设当前答案为mid 将序列按照用券之后能省掉的多少排序,那么我们对于两种情况 \(m ...

  6. Spring Cloud Greenwich.SR4 发布了,跟不上了……

    前几天 Spring Cloud Greenwich.SR4 发布了: https://spring.io/blog/2019/11/19/spring-cloud-greenwich-sr4-rel ...

  7. vue本地静态图片的路径问题解决方案

    不少人在vue的开发中遇到这样一个问题: img的src属性绑定url变量,然而图片加载失败. 大部分的情况中,是开发者使用了错误的写法,例如: <img src="{{ imgUrl ...

  8. 让sentinel-dashboard支持nacos

    以sentinel-1.7.0为例 下载源码,idea打开. 找到sentinel-dashboard这个项目 在该项目下的pom.xml文件中找到: <!-- for Nacos rule p ...

  9. Bash cat EOF

    cat <<EOF > ciphers.txt> ECDHE-ECDSA-AES128-GCM-SHA256> ECDHE-RSA-AES128-GCM-SHA256&g ...

  10. 整合zuul启动时报错Correct the classpath of your application so that it contains a single, compatible version of XXX

    今天集成zuul与consul的时候,出现如下错误 ***************************APPLICATION FAILED TO START******************** ...