来自视图的impala分析异常

tsm1rwdh  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(683)

我有一个数据库,它有一个由其他视图创建的视图,而其他视图是由其他视图创建的(数据工程师创建的视图不是我)
在 hive 里我可以这样做,但速度很慢,所以我想用 Impala

select * from table limit 5;

在 Impala 我得到一个错误,尝试无效元数据和刷新没有运气。

"ERROR: AnalysisException: No matching function with signature: lower(BIGINT)."

为什么会这样?以前从未见过这种错误。有没有递归的方法?

show create table;
jaql4c8m

jaql4c8m1#

首先,请注意hive和impala是不同的解决方案,具有不同的sql解析器,支持一组不同的函数和特性。在hive中有效的语法在impala中可能无效。impala可能不支持用hive定义的某些表格格式(例如orc或具有二进制列的parquet)。
在这个特定的例子中,hive文档似乎与impala文档匹配 lower() (注意:检查您使用的版本)。
但有一个大问题: lower() 获取一个字符串并生成一个字符串。它不是一个数字函数。这听起来像是一个严重的错误,比如 lower() --将一些文本转换成小写--然后 floor() --获取等于或小于十进制值的整数值。
与您所谓的数据工程师核实他/她正在尝试做什么,并确保视图得到了正确的测试(或者在进行更正之后得到了正确的测试)。hive显然应用了一些隐式类型转换,使查询能够运行,即使这样做毫无意义并产生愚蠢的结果。

相关问题