利用从hive源码中剥离的词法解析器解析sql发现
select u.name, o.orderid from order o join user u on o.uid = u.uid;
一条简单sql报错,NoViableAltException(334@[])。最后发现问题是 order 和 user 名称。
二、解决由于order和user是hive的保留关键字(关键字大全参考这里
- 将表名改成其它如 orderr、userr
- 利用反单引号 ` 修饰
String sj = “select u.name,o.orderid from `user` u join `order` o on o.id=u.id;”;
正常了:


![NoViableAltException(334@[]) NoViableAltException(334@[])](http://www.mshxw.com/aiimages/31/350553.png)
