spark last first函数的坑

2020-10-15  本文已影响0人  Gilegamesh

某天一个需求需要用上spark sql的内置function, first跟last。心想只要把数据按某个字段提前排序,再分组取出first跟last值就没问题。

结果却是测试中每次运行first跟last值却飘忽不定,每次运行结果都不一样。遂去看了下源码注解:

竟然说结果在shuffle之后会导致不确定性。这个本来就是聚合函数,肯定会触发shuffle。这可就尴尬了。。。。。

废话不多说,只能自己实现了。

udf是解决输入一行输出一行

udaf是解决输入多行输出一行

udtf是解决输入一行输出多行

那自然就是实现udaf了。

上代码:

这个实现必须是按特定字段排序,然后求分组内的第一个值的需求。

上一篇 下一篇

猜你喜欢

热点阅读