在Ubuntu 16.04上,我使用Hive 2.3.2和Hadoop 2.7.1,我有一个错误:
Exception in thread "main" java.lang.NoSuchMethodError: com.ibm.icu.impl.ICUBinary.getRequiredData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
at com.ibm.icu.charset.UConverterAlias.haveAliasData(UConverterAlias.java:131)
at com.ibm.icu.charset.UConverterAlias.getCanonicalName(UConverterAlias.java:525)
at com.ibm.icu.charset.CharsetProviderICU.getICUCanonicalName(CharsetProviderICU.java:126)
at com.ibm.icu.charset.CharsetProviderICU.charsetForName(CharsetProviderICU.java:62)
我遇到了同样的问题。在Ubuntu 16.04,Hive 2.3.3,Hadoop 2.9.0。
com.ibm.icu.impl.Icubinary类位于Hive/lib
的ICU4J Jar中Hive用ICU4J-4.8.1.Jar运送,但是ICU4J-4.8.1中的Icubinary类不包含GetRequiredData方法。
检查了最新版本的ICU4J(https://mvnrepository.com/artifact/com.ibm.com.icu/icu4j(,发现该方法存在。
用最新版本替换了Hive/lib的ICU4J Jar,然后开始工作!