hive ALLOW_UNQUOTED_CONTROL_CHARS

hadoop-0.20.205.0 下 安装 hive-0.10.0 :

hive 启动的时候, 报错如下:

Exception in thread "main" java.lang.NoSuchFieldError: ALLOW_UNQUOTED_CONTROL_CHARS
        at org.apache.hadoop.hive.ql.udf.generic.GenericUDTFJSONTuple.<clinit>(GenericUDTFJSONTuple.java:59)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:113)
        at org.apache.hadoop.hive.ql.exec.FunctionRegistry.registerGenericUDTF(FunctionRegistry.java:545)
        at org.apache.hadoop.hive.ql.exec.FunctionRegistry.registerGenericUDTF(FunctionRegistry.java:539)
        at org.apache.hadoop.hive.ql.exec.FunctionRegistry.<clinit>(FunctionRegistry.java:472)
        at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:202)
        at org.apache.hadoop.hive.cli.CliSessionState.<init>(CliSessionState.java:86)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:635)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

原因:

hive 里的 jackson jar 包 和 hadoop 里的不一致, hadoop 里的用的是老的 1.0.1 的, hive 里的是 1.8.8.

将hadoop 里的jar 替换成和 hive 一样的就ok了, 

hadoop jackson 文件地址:

$HADOOP_HOME/share/hadoop/lib/

$HADOOP_HOME/lib/

两处.

原文地址:https://www.cnblogs.com/BennyTian/p/3106410.html