spark sql cache时发现的空字符串问题

博客园首发,转帖请注明地址:https://www.cnblogs.com/tzxxh/p/10267202.html

图一

图一

 

图1未做cache,直接过滤expression列的 null 和空字符串,可以看到结果符合预期。

图二

 

图2做了cache,再过滤expression列的 null 和空字符串,可以看到结果并不符合预期。

 

图三

 

 

图三中的id为varchar类型,可以看到 id != '' 的过滤条件,不论id的值有几个空格,都会过滤掉,id='a'的条件也是不论a后面有几个空格都会取出来。这是因为查询mysql会帮我们过滤掉尾部空格。

图一图二中的expression字段为varchar类型,sql查询的时候会自动去掉尾部的空格。

图四

 

从上图可以看到,带缓存的是扫描内存中的数据,因此,图一直接查询的mysql,过滤的时候会去掉尾部空格;图二扫描内存中的数据,不会去掉尾部空格。

posted @ 2019-01-14 15:45  许新浩  阅读(803)  评论(0编辑  收藏  举报