signed

QiShunwang

“诚信为本、客户至上”

Hive代码测试问题汇总

2021/3/21 0:29:54   来源:
  1. 错误提示FAILED: ParseException line 26:29 cannot recognize input near ‘’ ‘’ ‘’ in subquery source
    解决方法:一般表示“子查询”缺少别名
  2. Hive中空值问题处理
  • 对于INT类型的数值而言,无论插入值是NULL或‘’,文件中实际存储为\N;然而,对于STRING类型的数值是不同的,插入值分为NULL和‘’,文件中实际存储形式分别为:\N和空。
  • Coalesce和NVL函数
    Coalesce和NVL只对NULL值有效。对‘’不予处理。
    Eg: null_test表中的b字段(STRING)有为‘’值。
  1. 表中存在大量的NULL值
    在Hive代码测试过程中,有时候会遇到在某张表中存在大量的NULL:
  • 需要查看表结构与现网中的字段顺序是否一致;
  • 字段类型与现网中是否一致,如空值问题以及类型转换。
  • 另外一种情况就是:该表有可能是一张错表,即表名与现网表名一致,但表中字段个数或类型完全不一致,也就说建错表了。
  • 向int插入string为null。
  1. Hive代码测试中的accesstype判断条件
    表中该字段被转换成NULL值,原因是字段类型不一致。
    解决办法:注意查看对应表中的字段类型。STRING转换INT容易出现NULL值
  2. 错误提示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))。