PrestoException:Error{message='Duplicate entry '2017-01-01' for key date异常解决记录

今天在用Presto执行Sql语句时,报出了PrestoException:Error{message='Duplicate entry '2017-01-01' for key date异常
刚开始看到这个异常,肯定都会去查看是不是唯一索引冲突了,那么博主就先检查Sql是否有问题(Sql几百行压根无头绪),没有发现问题,后来猜测是不是Presto数据量太大引起的,那么楼主就将Sql中的筛选条件由一年拆分成12个月去执行了一下,在执行过程中发现在执行9月份的Sql时,出现了异常,就这样一点一点的定位,最后发现确实是9月份的Sql执行时出现的问题,那么我又重新搞了一个表,将唯一索引去掉,看看是不是数据本身的问题,博主跑了一遍9月份的Sql,这时发现Presto抛出了一个字段is not null,博主又跑去看了一下这个字段确实不能为null,那么看来问题就在这了。
Sql中有一段case when then的语法,但是在语法最后没有else,就会造成出现null值。而后来问同事,Presto本身会有重试机制,那么唯一索引冲突的异常就不言而喻了,博主就将Sql重新修改了一下添加了Else的逻辑,问题解决。
虽然看起来问题不太起眼,但是搞了一天,在这里记下

猜你喜欢

转载自blog.csdn.net/q2365921/article/details/73922047
今日推荐