前言
最近一个小伙伴在做从 Oracle
到 Hive
的业务迁移工作,在迁移过程中属实遇到了一些坑,今天就来汇总一下这些坑,避免以后大家其他业务迁移的时候再出现类似的问题,即使出现了也可以拿过来进行对照解决。
问题1:Distinct window functions are not supported: count(distinct position_id#92) windowspecdefinition
从上面图片中的报错日志信息来看,是说窗口函数是不支持 count distinct
的。很显然在 Oracle
中支持的写法,但是在 Spark SQL
是不支持的。
解决方案
- 方案1:使用
approx_count_distinct
,但是它是概率统计,非精确统计 - 方案2:
collect_set
与size
结合使用
之前的 sql
:
count