apache钻java.lang.NullPointerException
Posted
技术标签:
【中文标题】apache钻java.lang.NullPointerException【英文标题】:apache drill java.lang.NullPointerException 【发布时间】:2018-05-30 19:42:12 【问题描述】:我正在尝试在 Windows 下以嵌入式模式使用钻。但我遇到以下错误:
> sqlline.bat -u "jdbc:drill:zk=local"
DRILL_ARGS - " -u jdbc:drill:zk=local"
Calculating HADOOP_CLASSPATH ...
HBASE_HOME not detected...
Calculating Drill classpath...
java.lang.NullPointerException
apache drill 1.13.0
"a drill is a terrible thing to waste"
0: jdbc:drill:zk=local>
0: jdbc:drill:zk=local>
0: jdbc:drill:zk=local>
0: jdbc:drill:zk=local> show tables;
No current connection
0: jdbc:drill:zk=local>
您可以看到当前没有连接,并且 Web 控制台也无法正常工作。谢谢
编辑:添加日志文件内容。
2018-05-31 03:44:27,981 [主要] 信息 o.a.drill.common.config.DrillConfig - 配置和插件文件 在 115 毫秒内识别。基本配置: - jar:file:/C:/apache-drill-1.13.0/jars/drill-common-1.13.0.jar!/drill-default.conf
中间配置和插件文件,按优先顺序排列: - jar:file:/C:/apache-drill-1.13.0/jars/drill-storage-kafka-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-opentsdb-storage-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-hive-exec-shaded-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-java-exec-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-storage-hbase-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-kudu-storage-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-logical-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-jdbc-storage-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-mongo-storage-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-gis-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-memory-base-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-common-1.13.0.jar!/drill-module.conf - jar:file:/C:/apache-drill-1.13.0/jars/drill-storage-hive-core-1.13.0.jar!/drill-module.conf
覆盖文件:file:/C:/apache-drill-1.13.0/conf/drill-override.conf 覆盖属性:-user = -password = -zk = local
2018-05-31 03:44:28,278 [主要] 警告 o.a.drill.exec.util.GuavaPatcher - 无法修补 Guava 类。 javassist.CannotCompileException:由 java.lang.LinkageError:加载程序(实例 sun/misc/Launcher$AppClassLoader): 尝试重复类 名称定义:“com/google/common/base/Stopwatch”在 javassist.ClassPool.toClass(ClassPool.java:1099) ~[javassist-3.16.1-GA.jar:na] 在 javassist.ClassPool.toClass(ClassPool.java:1042) ~[javassist-3.16.1-GA.jar:na] 在 javassist.ClassPool.toClass(ClassPool.java:1000) ~[javassist-3.16.1-GA.jar:na] 在 javassist.CtClass.toClass(CtClass.java:1140) ~[javassist-3.16.1-GA.jar:na] 在 org.apache.drill.exec.util.GuavaPacher.patchStopwatch(GuavaPatcher.java:66) ~[drill-java-exec-1.13.0.jar:1.13.0] 在 org.apache.drill.exec.util.GuavaPacher.patch(GuavaPatcher.java:36) ~[drill-java-exec-1.13.0.jar:1.13.0] 在 org.apache.drill.exec.server.Drillbit.(Drillbit.java:69) [drill-java-exec-1.13.0.jar:1.13.0] 在 org.apache.drill.jdbc.impl.DrillConnectionImpl.(DrillConnectionImpl.java:134) [钻-jdbc-1.13.0.jar:1.13.0] 在 org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:73) [钻-jdbc-1.13.0.jar:1.13.0] 在 org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69) [钻-jdbc-1.13.0.jar:1.13.0] 在 org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:138) [avatica-1.10.0.jar:1.10.0] 在 org.apache.drill.jdbc.Driver.connect(Driver.java:72) [钻-jdbc-1.13.0.jar:1.13.0] 在 sqlline.DatabaseConnection.connect(DatabaseConnection.java:168) [sqlline-1.1.9-drill-r7.jar:na] 在 sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:214) [sqlline-1.1.9-drill-r7.jar:na] 在 sqlline.Commands.connect(Commands.java:1083) [sqlline-1.1.9-drill-r7.jar:na] 在 sqlline.Commands.connect(Commands.java:1015) [sqlline-1.1.9-drill-r7.jar:na] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) ~[na:1.8.0_171] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_171] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_171] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_171] 在 sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36) [sqlline-1.1.9-drill-r7.jar:na] 在 sqlline.SqlLine.dispatch(SqlLine.java:742) [sqlline-1.1.9-drill-r7.jar:na] 在 sqlline.SqlLine.initArgs(SqlLine.java:528) [sqlline-1.1.9-drill-r7.jar:na] 在 sqlline.SqlLine.begin(SqlLine.java:596) [sqlline-1.1.9-drill-r7.jar:na] 在 sqlline.SqlLine.start(SqlLine.java:375) [sqlline-1.1.9-drill-r7.jar:na] 在 sqlline.SqlLine.main(SqlLine.java:268) [sqlline-1.1.9-drill-r7.jar:na] 引起:java.lang.LinkageError: loader (instance of sun/misc/Launcher$AppClassLoader): 尝试重复类 名称定义:“com/google/common/base/Stopwatch”在 java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_171] at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_171] 在 java.lang.ClassLoader.defineClass(ClassLoader.java:642) ~[na:1.8.0_171] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) ~[na:1.8.0_171] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_171] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_171] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_171] 在 javassist.ClassPool.toClass2(ClassPool.java:1112) ~[javassist-3.16.1-GA.jar:na] 在 javassist.ClassPool.toClass(ClassPool.java:1093) ~[javassist-3.16.1-GA.jar:na]
【问题讨论】:
这是什么版本的钻?您还可以提供 NullPointerException 的堆栈跟踪吗?它可能在 Drillbit.log 中 我使用的是 1.13.0,这是当前最新的版本。我从日志文件中添加了内容。 感谢您的信息。这是日志中的所有内容吗?我期待在那里的某个地方看到 NullPointerException。 这是 sqlline.log 文件的摘录。整个文件太长,*** 不允许我发布。但是,该文件的其他部分似乎不包含错误消息。 嗯我不知道出了什么问题 :(。很多 Drill 开发人员和用户都活跃在 Drill 邮件列表中。您可以订阅用户列表并在那里发布您的问题吗?几率最好有人在那里看到你的问题。见drill.apache.org/mailinglists 【参考方案1】:您的 HADOOP_CLASSPATH 中有与 Drill 的不兼容的 Guava 版本。 你可以在这里找到类似的问题:DRILL-4931, DRILL-4928
尝试从您的 HADOOP_CLASSPATH 中排除 Guava jars,或者通过以下方式取消设置:~$unset HADOOP_CLASSPATH
这个问题应该在合并DRILL-6422的PR后解决
【讨论】:
DRILL-6422 已解决,是 Drill master 分支的一部分。它将包含在 1.15.0 Drill 版本中。以上是关于apache钻java.lang.NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章