Hive中定义分割符会使用八进制的ASCII码

"在使用Azkaban运行job时遇到Hive解析错误,具体为MismatchedTokenException,错误源于输入'Nov'时预期的是')'。问题出现在Hive的SQL语句中,可能是日期格式不正确或者字段分隔符设置不匹配。创建表时使用了八进制ASCII码作为字段分隔符,尝试使用'11'表示水平制表符。解决方法包括检查和修正SQL语句中的日期格式和分隔符设置。"
摘要由CSDN通过智能技术生成

问题描述:
今天在用Azkaban跑job的时候发现出了如下问题:

14-11-2021 15:50:00 CST analysis INFO - MismatchedTokenException(24!=347)
14-11-2021 15:50:00 CST analysis INFO - 	at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken(BaseRecognizer.java:617)
14-11-2021 15:50:00 CST analysis INFO - 	at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:115)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.parse.HiveParser.cteStatement(HiveParser.java:36027)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.parse.HiveParser.withClause(HiveParser.java:35886)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:35700)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2284)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1333)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:208)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:77)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:70)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:468)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1317)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1457)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1227)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:233)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:184)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:336)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:787)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
14-11-2021 15:50:00 CST analysis INFO - 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14-11-2021 15:50:00 CST analysis INFO - 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
14-11-2021 15:50:00 CST analysis INFO - 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
14-11-2021 15:50:00 CST analysis INFO - 	at java.lang.reflect.Method.invoke(Method.java:498)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.util.RunJar.run(RunJar.java:244)
14-11-2021 15:50:00 CST analysis INFO - 	at org.apache.hadoop.util.RunJar.main(RunJar.java:158)
14-11-2021 15:50:00 CST analysis INFO - FAILED: ParseException line 1:75 mismatched input 'Nov' expecting ) near 'Sun' in statement
14-11-2021 15:50:01 CST analysis INFO - Process completed unsuccessfully in 52 seconds.
14-11-2021 15:50:01 CST analysis ERROR - Job run failed!

其中有一个job是将数据处理后放入到一个预先创建好的表中,但是发现插入失败.
具体创建表语句

create table user_info(active_num string,`date` string)
row format delimited fields terminated by '\t' ;

这个问题出现的原因是hive中的分割符使用八进制的ASCII码表示
具体如下表

八进制十六进制十进制字符八进制十六进制十进制字符
00000nul1004064@
01011soh1014165A
02022stx1024266B
03033etx1034367C
04044eot1044468D
05055enq1054569E
06066ack1064670F
07077bel1074771G
10088bs1104872H
11099ht1114973I
120a10nl1124a74J
130b11vt1134b75K
140c12ff1144c76L
150d13er1154d77M
160e14so1164e78N
170f15si1174f79O
201016dle1205080P
211117dc11215181Q
221218dc21225282R
231319dc31235383S
241420dc41245484T
251521nak1255585U
261622syn1265686V
271723etb1275787W
301824can1305888X
311925em1315989Y
321a26sub1325a90Z
331b27esc1335b91[
341c28fs1345c92|
351d29gs1355d93]
361e30re1365e94^
371f31us1375f95_
402032sp1406096
412133!1416197a
4222341426298b
432335#1436399c
442436$14464100d
452537%14565101e
462638&14666102f
472739`14767103g
502840(15068104h
512941)15169105i
522a42*1526a106j
532b43+1536b107k
542c44,1546c108l
552d45-1556d109m
562e46.1566e110n
572f47/1576f111o
603048016070112p
613149116171113q
623250216272114r
633351316373115s
643452416474116t
653553516575117u
663654616676118v
673755716777119w
703856817078120x
713957917179121y
723a58:1727a122z
733b59;1737b123{
743c60<1747c124|
753d61=1757d125}
763e62>1767e126~
773f63?1777f127del

如果没有可以通过对应的二进制转化
https://www.bejson.com/convert/jinzhi/
比如我获取水平制表符的八进制码
在这里插入图片描述
重新创建表:

create table user_info(active_num string,`date` string) row format delimited fields terminated by '\011';

每天进步一点点.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值