hive常见错误

本人因为最近业务经常会使用hive,先整理一下常见的出错问题。

       1.我最近遇见过一个棘手的问题是,对方给我一个月的数据源用天分割数据,也就是有30个文件夹。但我load到我hive中指定的表的时候发现有三天的数据拉不进去。随后我想把这三天的数据直接复制到我hive表的文件夹下不就可以了么。但随后hive查询并没有显示这三天的数据,但是业务着急先忽略这三天的数据。我去仔细看了一眼数据存储的文件,发现有多个子目录(几百个)。会导致hive拉取不进去。 后我将load 在指定为子目录层级后加载进去了。随后我对该表又进行操作,发现有如下的报错 return code 2 unexpected end of input stream。

后查看日志发现数据源有几个gz格式损坏。怀疑是复制到hive目录层级下,hive又加载进去一遍 。hive加载数据的时候有同名的数据,会导致加载的时候重命名,也或许是产生的中间文件没有删除(暂时没找到确切原因)。后通过日志找到该gz文件(数据)。有两种解决方法 一种就是重新加载数据源( 数据量太大 文件几千个 ),第二种就是将该gz文件下载下来 重新打包上传。

 

2.也是刚接触大数据 发现领导给的以前的一个逻辑 多表查询 有!=这个符号  ,后来发现hive有的版本不接受!=应该用<>,第二中就是尽量不要再hive中使用<>,因为会将一个表的所有数据加载到内存中判断,会导致mapreduce 卡死。可以用 left join代替 

select * from a,b where a.taz!=b.taz;

可以替代为 select a.* from a left join b on a.taz=b.taz where b.id is null;

其实就是关联了之后b表的值不为null 就是等于 等于null 就是 !=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值