Apache Drill - hiveserver2 jdbc 错误

Posted

技术标签:

【中文标题】Apache Drill - hiveserver2 jdbc 错误【英文标题】:Apache Drill - hiveserver2 jdbc error 【发布时间】:2017-11-04 23:28:46 【问题描述】:

基本的 hive 查询都会抛出错误!有没有人有任何其他语法可以工作?或者是否有一些错误,钻头留下了一个领先的。在查询的前面?

已将https://repo1.maven.org/maven2/org/apache/hive/hive-jdbc/2.3.0/hive-jdbc-2.3.0-standalone.jar 复制到/usr/lib/apache-drill-1.11.0/jars/3rdparty/hive-jdbc-2.3.0-standalone.jar

添加了这个存储插件:


type": "jdbc",
"driver": "org.apache.hive.jdbc.HiveDriver",
"url": "jdbc:hive2://host:10000/default",
"username": "hive",
"password": "hive1234",
"enabled": true

-

[ec2-user@host ~]$ cd /usr/lib/apache-drill-1.11.0
[ec2-user@host apache-drill-1.11.0]$ ./bin/drill-embedded
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
Nov 01, 2017 7:53:53 AM org.glassfish.jersey.server.ApplicationHandler initialize
INFO: Initiating Jersey application, version Jersey: 2.8 2014-04-29 01:25:26...
apache drill 1.11.0
"this isn't your grandfather's sql"
0: jdbc:drill:zk=local> SELECT count(*) FROM hive2.`contact`;
Error: DATA_READ ERROR: The JDBC storage plugin failed while trying setup the SQL query.

sql SELECT COUNT(*) AS EXPR$0
FROM (SELECT 0 AS $f0
FROM.default.contact) AS t
plugin hive2
Fragment 0:0

[Error Id: 4b293e97-7547-49c5-91da-b9ee2f2184fc on ip-myip.mydomain.orghere.com:31010] (state=,code=0)




0: jdbc:drill:zk=local> ALTER SESSION SET `exec.errors.verbose` = true;
+-------+-------------------------------+
|  ok   |            summary            |
+-------+-------------------------------+
| true  | exec.errors.verbose updated.  |
+-------+-------------------------------+
1 row selected (0.351 seconds)

0: jdbc:drill:zk=local> select * from hive2.contact;
Error: DATA_READ ERROR: The JDBC storage plugin failed while trying setup the SQL query.

sql SELECT *
FROM.default.contact
plugin hive2
Fragment 0:0

[Error Id: fe36b026-e8ff-4354-af6c-6073130680c9 on ip-ip.domain.org.com:31010]

  (org.apache.hive.service.cli.HiveSQLException) Error while compiling statement: FAILED: ParseException line 2:4 cannot recognize input near '.' 'default' '.' in join source
    org.apache.hive.jdbc.Utils.verifySuccess():267
    org.apache.hive.jdbc.Utils.verifySuccessWithInfo():253
    org.apache.hive.jdbc.HiveStatement.runAsyncOnServer():313
    org.apache.hive.jdbc.HiveStatement.execute():253
    org.apache.hive.jdbc.HiveStatement.executeQuery():476
    org.apache.commons.dbcp.DelegatingStatement.executeQuery():208
    org.apache.commons.dbcp.DelegatingStatement.executeQuery():208
    org.apache.drill.exec.store.jdbc.JdbcRecordReader.setup():177
    org.apache.drill.exec.physical.impl.ScanBatch.<init>():104
    org.apache.drill.exec.physical.impl.ScanBatch.<init>():126
    org.apache.drill.exec.store.jdbc.JdbcBatchCreator.getBatch():40
    org.apache.drill.exec.store.jdbc.JdbcBatchCreator.getBatch():33
    org.apache.drill.exec.physical.impl.ImplCreator.getRecordBatch():156
    org.apache.drill.exec.physical.impl.ImplCreator.getChildren():179
    org.apache.drill.exec.physical.impl.ImplCreator.getRecordBatch():136
    org.apache.drill.exec.physical.impl.ImplCreator.getChildren():179
    org.apache.drill.exec.physical.impl.ImplCreator.getRootExec():109
    org.apache.drill.exec.physical.impl.ImplCreator.getExec():87
    org.apache.drill.exec.work.fragment.FragmentExecutor.run():207
    org.apache.drill.common.SelfCleaningRunnable.run():38
    java.util.concurrent.ThreadPoolExecutor.runWorker():1149
    java.util.concurrent.ThreadPoolExecutor$Worker.run():624
    java.lang.Thread.run():748
  Caused By (org.apache.hive.service.cli.HiveSQLException) Error while compiling statement: FAILED: ParseException line 2:4 cannot recognize input near '.' 'default' '.' in join source
    org.apache.hive.service.cli.operation.Operation.toSQLException():380
    org.apache.hive.service.cli.operation.SQLOperation.prepare():206
    org.apache.hive.service.cli.operation.SQLOperation.runInternal():290
    org.apache.hive.service.cli.operation.Operation.run():320
    org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementInternal():530
    org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementAsync():517
    sun.reflect.GeneratedMethodAccessor86.invoke():-1
    sun.reflect.DelegatingMethodAccessorImpl.invoke():43
    java.lang.reflect.Method.invoke():498
    org.apache.hive.service.cli.session.HiveSessionProxy.invoke():78
    org.apache.hive.service.cli.session.HiveSessionProxy.access$000():36
    org.apache.hive.service.cli.session.HiveSessionProxy$1.run():63
    java.security.AccessController.doPrivileged():-2
    javax.security.auth.Subject.doAs():422
    org.apache.hadoop.security.UserGroupInformation.doAs():1807
    org.apache.hive.service.cli.session.HiveSessionProxy.invoke():59
    com.sun.proxy.$Proxy42.executeStatementAsync():-1
    org.apache.hive.service.cli.CLIService.executeStatementAsync():310
    org.apache.hive.service.cli.thrift.ThriftCLIService.ExecuteStatement():530
    org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult():1437
    org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult():1422
    org.apache.thrift.ProcessFunction.process():39
    org.apache.thrift.TBaseProcessor.process():39
    org.apache.hive.service.auth.TSetIpAddressProcessor.process():56
    org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run():286
    java.util.concurrent.ThreadPoolExecutor.runWorker():1149
    java.util.concurrent.ThreadPoolExecutor$Worker.run():624
    java.lang.Thread.run():748
  Caused By (java.lang.RuntimeException) org.apache.hadoop.hive.ql.parse.ParseException:line 2:4 cannot recognize input near '.' 'default' '.' in join source
    org.apache.hadoop.hive.ql.parse.ParseDriver.parse():207
    org.apache.hadoop.hive.ql.parse.ParseUtils.parse():77
    org.apache.hadoop.hive.ql.parse.ParseUtils.parse():70
    org.apache.hadoop.hive.ql.Driver.compile():468
    org.apache.hadoop.hive.ql.Driver.compileInternal():1316
    org.apache.hadoop.hive.ql.Driver.compileAndRespond():1294
    org.apache.hive.service.cli.operation.SQLOperation.prepare():204
    org.apache.hive.service.cli.operation.SQLOperation.runInternal():290
    org.apache.hive.service.cli.operation.Operation.run():320
    org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementInternal():530
    org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementAsync():517
    sun.reflect.GeneratedMethodAccessor86.invoke():-1
    sun.reflect.DelegatingMethodAccessorImpl.invoke():43
    java.lang.reflect.Method.invoke():498
    org.apache.hive.service.cli.session.HiveSessionProxy.invoke():78
    org.apache.hive.service.cli.session.HiveSessionProxy.access$000():36
    org.apache.hive.service.cli.session.HiveSessionProxy$1.run():63
    java.security.AccessController.doPrivileged():-2
    javax.security.auth.Subject.doAs():422
    org.apache.hadoop.security.UserGroupInformation.doAs():1807
    org.apache.hive.service.cli.session.HiveSessionProxy.invoke():59
    com.sun.proxy.$Proxy42.executeStatementAsync():-1
    org.apache.hive.service.cli.CLIService.executeStatementAsync():310
    org.apache.hive.service.cli.thrift.ThriftCLIService.ExecuteStatement():530
    org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult():1437
    org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult():1422
    org.apache.thrift.ProcessFunction.process():39
    org.apache.thrift.TBaseProcessor.process():39
    org.apache.hive.service.auth.TSetIpAddressProcessor.process():56
    org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run():286
    java.util.concurrent.ThreadPoolExecutor.runWorker():1149
    java.util.concurrent.ThreadPoolExecutor$Worker.run():624
    java.lang.Thread.run():748 (state=,code=0)
0: jdbc:drill:zk=local> select * from hive2.`default`.contact;
Error: DATA_READ ERROR: The JDBC storage plugin failed while trying setup the SQL query.

sql SELECT *
FROM.default.contact
plugin hive2
Fragment 0:0

[Error Id: 7b7aae92-fabd-49dd-ab84-15ca00189882 on ip-ip.domain.org.com:31010]

  (org.apache.hive.service.cli.HiveSQLException) Error while compiling statement: FAILED: ParseException line 2:4 cannot recognize input near '.' 'default' '.' in join source
    org.apache.hive.jdbc.Utils.verifySuccess():267
    org.apache.hive.jdbc.Utils.verifySuccessWithInfo():253
    org.apache.hive.jdbc.HiveStatement.runAsyncOnServer():313
    org.apache.hive.jdbc.HiveStatement.execute():253
    org.apache.hive.jdbc.HiveStatement.executeQuery():476
    org.apache.commons.dbcp.DelegatingStatement.executeQuery():208
    org.apache.commons.dbcp.DelegatingStatement.executeQuery():208
    org.apache.drill.exec.store.jdbc.JdbcRecordReader.setup():177
    org.apache.drill.exec.physical.impl.ScanBatch.<init>():104
    org.apache.drill.exec.physical.impl.ScanBatch.<init>():126
    org.apache.drill.exec.store.jdbc.JdbcBatchCreator.getBatch():40
    org.apache.drill.exec.store.jdbc.JdbcBatchCreator.getBatch():33
    org.apache.drill.exec.physical.impl.ImplCreator.getRecordBatch():156
    org.apache.drill.exec.physical.impl.ImplCreator.getChildren():179
    org.apache.drill.exec.physical.impl.ImplCreator.getRecordBatch():136
    org.apache.drill.exec.physical.impl.ImplCreator.getChildren():179
    org.apache.drill.exec.physical.impl.ImplCreator.getRootExec():109
    org.apache.drill.exec.physical.impl.ImplCreator.getExec():87
    org.apache.drill.exec.work.fragment.FragmentExecutor.run():207
    org.apache.drill.common.SelfCleaningRunnable.run():38
    java.util.concurrent.ThreadPoolExecutor.runWorker():1149
    java.util.concurrent.ThreadPoolExecutor$Worker.run():624
    java.lang.Thread.run():748
  Caused By (org.apache.hive.service.cli.HiveSQLException) Error while compiling statement: FAILED: ParseException line 2:4 cannot recognize input near '.' 'default' '.' in join source
    org.apache.hive.service.cli.operation.Operation.toSQLException():380
    org.apache.hive.service.cli.operation.SQLOperation.prepare():206
    org.apache.hive.service.cli.operation.SQLOperation.runInternal():290
    org.apache.hive.service.cli.operation.Operation.run():320
    org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementInternal():530
    org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementAsync():517
    sun.reflect.GeneratedMethodAccessor86.invoke():-1
    sun.reflect.DelegatingMethodAccessorImpl.invoke():43
    java.lang.reflect.Method.invoke():498
    org.apache.hive.service.cli.session.HiveSessionProxy.invoke():78
    org.apache.hive.service.cli.session.HiveSessionProxy.access$000():36
    org.apache.hive.service.cli.session.HiveSessionProxy$1.run():63
    java.security.AccessController.doPrivileged():-2
    javax.security.auth.Subject.doAs():422
    org.apache.hadoop.security.UserGroupInformation.doAs():1807
    org.apache.hive.service.cli.session.HiveSessionProxy.invoke():59
    com.sun.proxy.$Proxy42.executeStatementAsync():-1
    org.apache.hive.service.cli.CLIService.executeStatementAsync():310
    org.apache.hive.service.cli.thrift.ThriftCLIService.ExecuteStatement():530
    org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult():1437
    org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult():1422
    org.apache.thrift.ProcessFunction.process():39
    org.apache.thrift.TBaseProcessor.process():39
    org.apache.hive.service.auth.TSetIpAddressProcessor.process():56
    org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run():286
    java.util.concurrent.ThreadPoolExecutor.runWorker():1149
    java.util.concurrent.ThreadPoolExecutor$Worker.run():624
    java.lang.Thread.run():748
  Caused By (java.lang.RuntimeException) org.apache.hadoop.hive.ql.parse.ParseException:line 2:4 cannot recognize input near '.' 'default' '.' in join source
    org.apache.hadoop.hive.ql.parse.ParseDriver.parse():207
    org.apache.hadoop.hive.ql.parse.ParseUtils.parse():77
    org.apache.hadoop.hive.ql.parse.ParseUtils.parse():70
    org.apache.hadoop.hive.ql.Driver.compile():468
    org.apache.hadoop.hive.ql.Driver.compileInternal():1316
    org.apache.hadoop.hive.ql.Driver.compileAndRespond():1294
    org.apache.hive.service.cli.operation.SQLOperation.prepare():204
    org.apache.hive.service.cli.operation.SQLOperation.runInternal():290
    org.apache.hive.service.cli.operation.Operation.run():320
    org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementInternal():530
    org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementAsync():517
    sun.reflect.GeneratedMethodAccessor86.invoke():-1
    sun.reflect.DelegatingMethodAccessorImpl.invoke():43
    java.lang.reflect.Method.invoke():498
    org.apache.hive.service.cli.session.HiveSessionProxy.invoke():78
    org.apache.hive.service.cli.session.HiveSessionProxy.access$000():36
    org.apache.hive.service.cli.session.HiveSessionProxy$1.run():63
    java.security.AccessController.doPrivileged():-2
    javax.security.auth.Subject.doAs():422
    org.apache.hadoop.security.UserGroupInformation.doAs():1807
    org.apache.hive.service.cli.session.HiveSessionProxy.invoke():59
    com.sun.proxy.$Proxy42.executeStatementAsync():-1
    org.apache.hive.service.cli.CLIService.executeStatementAsync():310
    org.apache.hive.service.cli.thrift.ThriftCLIService.ExecuteStatement():530
    org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult():1437
    org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult():1422
    org.apache.thrift.ProcessFunction.process():39
    org.apache.thrift.TBaseProcessor.process():39
    org.apache.hive.service.auth.TSetIpAddressProcessor.process():56
    org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run():286
    java.util.concurrent.ThreadPoolExecutor.runWorker():1149
    java.util.concurrent.ThreadPoolExecutor$Worker.run():624
    java.lang.Thread.run():748 (state=,code=0)
0: jdbc:drill:zk=local>

【问题讨论】:

您可能需要查看更新版本的驱动程序。至少是 2.3.1,它可能包含错误修复。不幸的是,我找不到更新日志。 【参考方案1】:

尝试通过 Metastore 连接到 Hive: https://drill.apache.org/docs/hive-storage-plugin/ 或者你有什么理由直接连接到hiveserver2?

【讨论】:

以上是关于Apache Drill - hiveserver2 jdbc 错误的主要内容,如果未能解决你的问题,请参考以下文章

Apache Drill - 以嵌入式模式连接到 Drill [java]

Apache Drill 查询 HBase 表

存储插件配置持久性不适用于 Apache Drill

Apache Drill 与 Kerberos

将 Apache Drill 连接到 Kudu

无法使用 apache Drill 1.2 配置 postgreSQL JDBC 驱动程序