Spark SQL函数之分组排序
2018-02-02 15:02
337 查看
需求:根据class分组对组内的age进行排序
原表
结果
Spark SQL :
SELECT name, age, class, row_number() over(partition by age
order byclass) as RE
FROM A
默认会把同一分组的age最大放到第一位,并且设置RE=1,以此类推
注意事项 :
SELECT first(name) as name FROM
(
SELECT name,
age, class, row_number() over(partition by age
order by class) as RE
FROM A
) B group by class
以上SQL不会得到年龄最大的人
原因推测(未阅读源码,本人推测)
SELECT
name, age, class, row_number() over(partition by age
order byclass) as RE
FROM A 本句SQL虽然把结果排序了,但是再次进行Group By的时候把原来的数据重新打乱了。
看下图:
分组排序的时候把同组数据发送到服务器A上,只有GROUP BY刚好在服务器A上读取数据,最终结果才是有序的
进行GROUP BY是部分分组的数据被移动到服务器B上,移动过程数据变得无序
Spark分布式计算的过程为了负载均衡讲数据发送到别的服务器处理,以上均为个人YY.
原表
结果
Spark SQL :
SELECT name, age, class, row_number() over(partition by age
order byclass) as RE
FROM A
默认会把同一分组的age最大放到第一位,并且设置RE=1,以此类推
注意事项 :
SELECT first(name) as name FROM
(
SELECT name,
age, class, row_number() over(partition by age
order by class) as RE
FROM A
) B group by class
以上SQL不会得到年龄最大的人
原因推测(未阅读源码,本人推测)
SELECT
name, age, class, row_number() over(partition by age
order byclass) as RE
FROM A 本句SQL虽然把结果排序了,但是再次进行Group By的时候把原来的数据重新打乱了。
看下图:
分组排序的时候把同组数据发送到服务器A上,只有GROUP BY刚好在服务器A上读取数据,最终结果才是有序的
进行GROUP BY是部分分组的数据被移动到服务器B上,移动过程数据变得无序
Spark分布式计算的过程为了负载均衡讲数据发送到别的服务器处理,以上均为个人YY.
相关文章推荐
- spark--当分组遇到排序的解决思路
- spark对分组后value值进行排序(JAVA)
- spark对分组后value值进行排序(JAVA)
- spark分组统计及二次排序案例一枚
- spark对分组后value值进行排序(JAVA)
- spark对分组后value值进行排序(JAVA)
- spark对分组后value值进行排序(JAVA)
- spark对分组后value值进行排序(JAVA)
- Spark分组二次排序
- spark对分组后value值进行排序(JAVA)
- 第20课 :SPARK Top N彻底解秘 TOPN 排序(Scala)SPARK分组TOPN 算法(JAVA) 必须掌握!
- spark对分组后value值进行排序(JAVA)
- spark对分组后value值进行排序(JAVA)
- Spark Scala TopN分组排序
- spark对分组后value值进行排序(JAVA)
- Spark Scala 分组排序取TopN
- spark对分组后value值进行排序(JAVA)
- spark小应用二:分组分数排序(SCALA)
- Spark的Dataset操作(三)-分组,聚合,排序
- spark对分组后value值进行排序(JAVA)