hive org.apache.spark.sql.catalyst.parser.ParseException: mismatched input expecting {...
select de2.*,locate(';',de2.cus_rank) as cus_rank_newfrom tablelimit 10运行查询语句时java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException:mismatched input ''' expecting {'(', 'SELECT',
select de2.*
,locate(';',de2.cus_rank) as cus_rank_new
from table
limit 10
运行查询语句时
java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException:
mismatched input ''' expecting {'(', 'SELECT', 'FROM', 'ADD', 'AS', 'ALL', 'DISTINCT', 'WHERE', 'GROUP', 'BY', 'GROUPING', 'SETS', 'CUBE', 'ROLLUP', 'ORDER', 'HAVING', 'LIMIT', 'AT', 'OR', 'AND', 'IN', NOT, 'NO', 'EXISTS', 'BETWEEN', 'LIKE', RLIKE, 'IS', 'NULL', 'TRUE', 'FALSE', 'NULLS', 'ASC', 'DESC', 'FOR', 'INTERVAL', 'CASE', 'WHEN', 'THEN', 'ELSE', 'END', 'JOIN', 'CROSS', 'OUTER', 'INNER', 'LEFT', 'SEMI', 'RIGHT', 'FULL', 'NATURAL', 'ON', 'LATERAL', 'WINDOW', 'OVER', 'PARTITION', 'RANGE', 'ROWS', 'UNBOUNDED', 'PRECEDING', 'FOLLOWING', 'CURRENT', 'FIRST', 'AFTER', 'LAST', 'ROW', 'WITH', 'VALUES', 'CREATE', 'TABLE', 'DIRECTORY', 'VIEW', 'REPLACE', 'INSERT', 'DELETE', 'INTO', 'DESCRIBE', 'EXPLAIN', 'FORMAT', 'LOGICAL', 'CODEGEN', 'COST', 'CAST', 'SHOW', 'TABLES', 'COLUMNS', 'COLUMN', 'USE', 'PARTITIONS', 'FUNCTIONS', 'DROP', 'UNION', 'EXCEPT', 'MINUS', 'INTERSECT', 'TO', 'TABLESAMPLE', 'STRATIFY', 'ALTER', 'RENAME', 'ARRAY', 'MAP', 'STRUCT', 'COMME....
java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException: 这句的意思应该是spark在做sql转化时报错。
输入'(单引号)有问题mismatched,期望expecting一个大括号里面的任何一个,但不可能是'(单引号)或者其他符号(单引号之后的符号)。
一开始没有认真看人家的报错,后面实在没有解决,反复查看报错信息,终于发现人家说的很清楚。。。
为什么会报这个错误呢?问题就出在英文状态下的;分号,这个是sql结束的标志。后面程序会认为是一段新的sql,找到这个原因,问题就迎刃而解了。
解决方式无非是转译。
百度一下 hive 查找英文状态下的分号
有效的方法是将;替换成\073进行转义。
select de2.*
,locate('\073',de2.cus_rank) as cus_rank_new
from table
limit 10
###locate的用法,注意参数容易传反。。。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)