Hive:Either list of columns or a custom serializer should be specified等两个问题

这几天被拉去写了几天SQL,出现了两个新的问题……说实话实在太蠢了,所以一定要记录下来:
1、Either list of columns or a custom serializer should be specified

drop table if exists table1;
create table if not exists table1; as
select * from temp.card_version0

当写了一万行SQL的时候,很容易在细枝末节上出现问题,比如第二行多了一个分号……
这个错误的意思是“应指定列列表或自定义序列化程序”,在HIve中如果出现任何未指定的,未定义的错误,都会出现这个错误提示,我搞了两小时,搞出了4种不同的出现该错误的方式,核心都是未定义问题。

2、Error while compiling statement: FAILED: Ambiguous column reference

select syllable1, syllable2 from
  (select syllable1, syllable2 from table1) a
  left join
  (select syllable1, syllable3 from table1) b
  on a.syllable1 = b.syllable1

另一种未指定类型的错误,select无法识别syllable1是出自哪一张表。需要写成a.syllable1。当然我举的例子非常浅显,实际上在表拼表的过程中,但凡出现重名的地方都要谨慎,都可能会出现这种问题。尤其是多表left join的时候,很容易疏忽这个问题。
类似的错误还有:
Error while compiling statement: FAILED: SemanticException Column syllable1 Found in more than One Tables/Subqueries
Error while compiling statement: FAILED: Duplicate column name syllable1
这两个本质也是一样的了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值