hive中关于 msck repair table 和with as的用法解释

在hive3.0之前我们一般建立hive外部表后,遇到增加字段或者修改字段类型长度等,我们习惯做法,删表重建后全表修复文件MSCK REPAIR TABLE table_name,一般对于没有错误历史数据的表,这样修复是可以的。但是我们如果遇到一些比较复杂的场景,这时我们只需要修复特定分区即可 MSCK REPAIR TABLE table_name partition(pt_d=‘20200331’);
对于hive高版本 3.0以后,实践用msck此方法修复数据,会报异常。这时我们需要手动alter table table_name drop if exists partition(pt_d<=20200331,pt_d>=20200301);再增加分区alter table table_name add if not exists partition(pt_d=‘20200301’);不需msck数据会在增加分区自动修复。

对于hive中的with as用法如下:
–相当于建了个e临时表
with tmp as (select * from emp e where e.empno=7499)
select * from tmp;
很多初学者喜欢这样with tmp as select * from emp e where e.empno=7499 或者 with tmp as (select * from emp e where e.empno=7499) 是会报语法错误的。
–相当于建了e、d临时表
CREATE table lishibiaoname if not exist AS
WITH
e AS (select * from emp),
d AS (select * from dept)
select * from e, d where e.deptno = d.deptno;
实际上临时表 lishibiaoname是由select * from e, d where e.deptno = d.deptno;产生出来的不是 由select * from emp生成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值