Hive代码测试问题汇总

  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))。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值