spark last first函数的坑

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

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


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

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

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

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

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

那自然就是实现udaf了。

上代码:



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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。