java.lang.NoSuchFieldError : type When creating a Hive table 错误

标签 java maven hadoop hive

我正在用代码创建一个配置单元表:

HiveInterface client = new HiveServer.HiveServerHandler();
client.execute("CREATE TABLE u_data (" +
        "userid INT," +
        " movieid INT," +
        " rating INT" +
        ")" +
        " ROW FORMAT DELIMITED " +
        "FIELDS TERMINATED BY '\\t' " +
        "STORED AS TEXTFILE;");

当运行 execute 命令时我得到这个异常:

java.lang.NoSuchFieldError: type
at org.apache.hadoop.hive.ql.parse.HiveLexer.mKW_CREATE(HiveLexer.java:1601)
at org.apache.hadoop.hive.ql.parse.HiveLexer.mTokens(HiveLexer.java:6360)
at org.antlr.runtime.Lexer.nextToken(Lexer.java:85)
at org.antlr.runtime.BufferedTokenStream.fetch(BufferedTokenStream.java:143)
at org.antlr.runtime.BufferedTokenStream.sync(BufferedTokenStream.java:137)
at org.antlr.runtime.CommonTokenStream.setup(CommonTokenStream.java:137)
at org.antlr.runtime.CommonTokenStream.LT(CommonTokenStream.java:94)
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:546)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:437)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:417)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:337)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:889)
at org.apache.hadoop.hive.service.HiveServer$HiveServerHandler.execute(HiveServer.java:191)

我能找到的唯一线索是它与 antlr-*.jar 有关,我将其作为依赖项添加到我的 pom.xml - 最新版本.

注意:该服务器是我在我的 java 代码中启动的独立服务器。

最佳答案

经过一些调查,并尝试了几个 antlr jar,我终于通过添加这个 maven 依赖项解决了这个问题:

<dependency>
   <groupId>org.antlr</groupId>
   <artifactId>antlr</artifactId>
   <version>3.0.1</version>
</dependency>

我的 Hadoop jar 版本为 0.8.1

关于java.lang.NoSuchFieldError : type When creating a Hive table 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19370321/

相关文章:

java - BeanCreationException : Error creating bean with name 'entityManagerFactory' defined in class path resource [org/. ../DataConfiguration.class]:

java - 如何在 Homebrew 公式中下载 Buck 远程文件?

java - 如何在 Hadoop 流中将不可打印指定为键值分隔符

hadoop - Hbase 区域服务器

java - Java 中的锁定进程

具有数据库支持最佳实践的 Java 枚举

java - 如何使用 Swing JPanel 在 Java 中强制重绘?

maven - 在当前项目和插件组中找不到前缀 'sonar' 的插件错误

android - 跨模块共享 uploadArchives 任务

java - 使用(hadoop)FileSystem时,Spark应用程序中的InvalidProtocolBufferException