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 ...
 
随机推荐
- java http get和post请求
			
1.http工具类 package com.funshion.common.utils; import java.net.URI;import java.net.URL; import org.apa ...
 - C函数之genv
			
函数原型: include<stdlib.h> char *getenv(char *envvar); 函数说明: getenv()用来取得参数envvar环境变量的内容.参数envvar ...
 - Affy包 estrogen包
			
下载安装 if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocMana ...
 - Leetcode 219. 存在重复元素 II
			
说明: 首先,这是一道Easy题,我天!但是题意理解还是很多坑~ 题目描述: 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j] ...
 - nginx缓存静态资源,只需几个配置提升10倍页面加载速度
			
nginx缓存静态资源,只需几个配置提升10倍页面加载速度 首先我们看图说话 这是在没有缓存的情况下,这个页面发送了很多静态资源的请求: 1.png 可以看到,静态资源占用了整个页面加载用时的90 ...
 - 学习Linux要知道的知识点总结
			
1 如何查看Linux的user和hostname? (1)打开终端查看 终端左侧的root@zlkj:~$,前面的root为user - 用户名,后面的zlkj为hostname - 主机名. (2 ...
 - 《Linux就该这么学》培训笔记_ch13_使用Bind提供域名解析服务
			
<Linux就该这么学>培训笔记_ch13_使用Bind提供域名解析服务 文章最后会post上书本的笔记照片. 文章主要内容: DNS域名解析服务 安装并部署Bind服务程序 部署从服务器 ...
 - c++ builder调用sql server的存储过程进行数据的下载和上传
			
小小的几行代码,在这里搞了一天.好好的一个周六过的无比的难受.代码很简单,但是主要原因是因为在用合作商的软件上传数据的时候有些框框没有勾选. come on....... 1.用两个控件ADOConn ...
 - mongodb compass 启动报错()
			
报错: 原因:由于直接关闭客户端,进程没关导致下次开启时,后台还是运行的所以无法重新开启 解决办法: 1.查看进程 tasklist | findstr “MongoDBCompass.exe” 2. ...
 - HashMap 统计一个字符串中每个单词出现的次数
			
HashMap 统计一个字符串中每个单词出现的次数 import java.util.HashMap; import java.util.Map; public class Test { public ...