一.简介

  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. selenium--单选框和复选框的操作

    单选框操作 from selenium import webdriver import unittest class Test_radio(unittest.TestCase): def test_S ...

  2. 如何确定假设检验的样本量(sample size)?

    在<如何计算假设检验的功效(power)和效应量(effect size)?>一文中,我们讲述了如何根据显著性水平α,效应量和样本容量n,计算功效,以及如何根据显著性水平α,功效和样本容量 ...

  3. 【数位DP】【P4317】花神的数论题

    [数位DP][P4317]花神的数论题 Description 给定 \(n\),求 \(n\) 以内所有正整数二进制下 \(1\) 的个数的乘积,答案对 \(10^7 + 7\) 取模 Limita ...

  4. 实验三:Linux进程管理(HDU)

    2.设计内容 把下面的几个网址的内容看懂,关于Linux的通信机制就会有个基本的了解了,后面的这几个代码也应该可以看得懂了. 管道通信:https://blog.csdn.net/ljianhui/a ...

  5. java web开发入门四(spring)基于intellig idea

    spring 1.spring简介 Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架. 且可以和其他框架一起使用:Spring与Struts,  Spring与hibernate (起 ...

  6. LRU缓存简单实现

    缓存接口定义 /** * 缓存接口 * * @author zhi * */ public interface ICache<K, V> { /** * 添加缓存数据 * * @param ...

  7. SCIE和SCI

    SCI和SCIE(SCI Expanded)分别是科学引文索引及科学引文索引扩展版(即网络版),主要是收录自然科学.工程技术领域最具影响力的重要期刊,包括2000多种外围刊. SCIE和SCI一样吗? ...

  8. js文件获取自身的URL路径

    我们做框架开发的时候,经常需要js文件获取的到自身的路径,在网上查了些资料,总结 了两种方式 浏览器支持docment.currentScript.src 直接用这个获取,不用支持的情况 try{ n ...

  9. Linux VIM8.1 Python3 编辑器配置文件

    Linux VIM8.1 Python3 编辑器配置文件 实现功能: 自动补全(包括函数模块方法补全) 自动代码标准格式化 自动检查代码错误 自定义头文件 自动括号补全 缩进指示线 代码一键折叠 代码 ...

  10. python面试题_01

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没多大 ...