- 错误提示FAILED: ParseException line 26:29 cannot recognize input near ‘’ ‘’ ‘’ in subquery source
解决方法:一般表示“子查询”缺少别名 - Hive中空值问题处理
- 对于INT类型的数值而言,无论插入值是NULL或‘’,文件中实际存储为\N;然而,对于STRING类型的数值是不同的,插入值分为NULL和‘’,文件中实际存储形式分别为:\N和空。
- Coalesce和NVL函数
Coalesce和NVL只对NULL值有效。对‘’不予处理。
Eg: null_test表中的b字段(STRING)有为‘’值。
- 表中存在大量的NULL值
在Hive代码测试过程中,有时候会遇到在某张表中存在大量的NULL:
- 需要查看表结构与现网中的字段顺序是否一致;
- 字段类型与现网中是否一致,如空值问题以及类型转换。
- 另外一种情况就是:该表有可能是一张错表,即表名与现网表名一致,但表中字段个数或类型完全不一致,也就说建错表了。
- 向int插入string为null。
- Hive代码测试中的accesstype判断条件
表中该字段被转换成NULL值,原因是字段类型不一致。
解决办法:注意查看对应表中的字段类型。STRING转换INT容易出现NULL值 - 错误提示ERROR ql.Driver: FAILED: UDFArgumentTypeException Only numeric or string type arguments are accepted but void is passed.
问题描述:UDF聚合函数的统计参数有空值出现,由于聚合函数仅能够处理numeric 和 string两种类型。如:SUM( )里面空参数。
解决方法:添加coalesce()函数,并修改其相应参数。如:PKG_DM_SALE_PARAM_TRACE.P_DM_SALE_PARAM_TRACE_D中,SUM(NEW_USERCNT),需要将其修改为:SUM(coalesce(NEW_USERCNT,0))。