使用apachedrill从配置单元访问表时出错



我正在尝试使用Drill从位于配置单元中的表abc中读取数据。为此,我创建了配置如下的蜂箱存储插件

{
"type": "hive",
"enabled": true,
"configProps": {
"hive.metastore.uris": "thrift://<ip>:<port>",
"fs.default.name": "hdfs://<ip>:<port>/",
"hive.metastore.sasl.enabled": "false",
"hive.server2.enable.doAs": "true",
"hive.metastore.execute.setugi": "true"
}
}

有了这个,我可以看到hive中的数据库,但当我试图访问特定数据库中的任何表时

select * from hive.db.abc;

它抛出以下错误

org.apache.drille.common.exceptions.UserRemoteException:验证错误:从第1行第15列到第1行、第18列:对象"abc"不是在"hive.db"中找到SQL查询null[错误Id:b6c56276-6255-4b5b-a600-746dbc2f3d67在centos2.example.com:33100](org.apache.calcate.runtime.CalciteContextException)从第1行开始,第15列到第1行,第18列:在中找不到对象"abc"'hive.db'sun.reflect.NativeConstructorAccessorImpl.newInstance0():-2sun.reflect.NativeConstructorAccessorImpl.newInstance():62sun.reflect.DelegatingConstructorAccessorImpl.newInstance():45java.lang.reflect.CConstructor.newInstance():423org.apache.calcate.runtime.Resources$ExInstWithCause.ex():463org.apache.calcate.sqlSqlUtil.newContextException():800org.apache.calcate.sqlSqlUtil.newContextException():788org.apache.calcate.sql.validate.SqlValidatorImpl.newValidationError():4703org.apache.calcate.sql.validate.IdentifierNamespace.resolveImpl():127org.apache.calcate.sql.validate.IdentifierNamespace.validateImpl():177org.apache.calcate.sql.validate.AbstractNamespace.validate():84org.apache.calcate.sql.validate.SqlValidatorImpl.validateNamespace():947org.apache.calcate.sql.validate.SqlValidatorImpl.validateQuery():928org.apache.calcate.sql.validate.SqlValidatorImpl.validateFrom():2972org.apache.drill.exec.planner.sql.SqlConverter$DrillValidator.validateFrom():267org.apache.calcate.sql.validate.SqlValidatorImpl.validateFrom():2957org.apache.drill.exec.planner.sql.SqlConverter$DrillValidator.validateFrom():267org.apache.calcate.sql.validate.SqlValidatorImpl.validateSelect():3216org.apache.calcate.sql.validate.SelectNamespace.validateImpl():60org.apache.calcate.sql.validate.AbstractNamespace.validate():84org.apache.calcate.sql.validate.SqlValidatorImpl.validateNamespace():947org.apache.calcate.sql.validate.SqlValidatorImpl.validateQuery():928org.apache.calcate.sql.SqlSelect.validate():226org.apache.calcate.sql.validate.SqlValidatorImpl.validateScopedExpression():903org.apache.calcate.sql.validate.SqlValidatorImpl.validate():613org.apache.drill.exec.planner.sql.SqlConverter.validate():190org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateNode():630org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateAndConvert():202org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan():174org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan():146org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan():84org.apache.drill.exec.work.foreman.foreman.runSQL():567org.apache.drill.exec.work.foreman.foreman.run():264java.util.concurrent.ThreadPoolExecutor.runWorker():1149java.util.concurrent.ThreadPoolExecutor$Worker.run():624java.lang.Thread.run():748原因(org.apache.calcate.sql.validate.SqlValidatorException)对象"abc"在"hive.db"中找不到sun.reflect.NativeConstructorAccessorImpl.newInstance0():-2sun.reflect.NativeConstructorAccessorImpl.newInstance():62sun.reflect.DelegatingConstructorAccessorImpl.newInstance():45java.lang.reflect.CConstructor.newInstance():423org.apache.calcate.runtime.Resources$ExInstWithCause.ex():463org.apache.calcate.runtime.Resources$ExInst.exe():572org.apache.calcate.sqlSqlUtil.newContextException():800org.apache.calcate.sqlSqlUtil.newContextException():788org.apache.calcate.sql.validate.SqlValidatorImpl.newValidationError():4703org.apache.calcate.sql.validate.IdentifierNamespace.resolveImpl():127org.apache.calcate.sql.validate.IdentifierNamespace.validateImpl():177org.apache.calcate.sql.validate.AbstractNamespace.validate():84org.apache.calcate.sql.validate.SqlValidatorImpl.validateNamespace():947org.apache.calcate.sql.validate.SqlValidatorImpl.validateQuery():928org.apache.calcate.sql.validate.SqlValidatorImpl.validateFrom():2972org.apache.drill.exec.planner.sql.SqlConverter$DrillValidator.validateFrom():267org.apache.calcate.sql.validate.SqlValidatorImpl.validateFrom():2957org.apache.drill.exec.planner.sql.SqlConverter$DrillValidator.validateFrom():267org.apache.calcate.sql.validate.SqlValidatorImpl.validateSelect():3216org.apache.calcate.sql.validate.SelectNamespace.validateImpl():60org.apache.calcate.sql.validate.AbstractNamespace.validate():84org.apache.calcate.sql.validate.SqlValidatorImpl.validateNamespace():947org.apache.calcate.sql.validate.SqlValidatorImpl.validateQuery():928org.apache.calcate.sql.SqlSelect.validate():226org.apache.calcate.sql.validate.SqlValidatorImpl.validateScopedExpression():903org.apache.calcate.sql.validate.SqlValidatorImpl.validate():613org.apache.drill.exec.planner.sql.SqlConverter.validate():190org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateNode():630org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateAndConvert():202org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan():174org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan():146org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan():84org.apache.drill.exec.work.foreman.foreman.runSQL():567org.apache.drill.exec.work.foreman.foreman.run():264java.util.concurrent.ThreadPoolExecutor.runWorker():1149java.util.concurrent.ThreadPoolExecutor$Worker.run():624java.lang.Thread.run():748

您应该升级到更新的Hive版本。对于Drill 1.13,它是Hive 2.3.2版本?从Drill-1.13开始Drill利用2.3.2版本的Hive客户端[1]。

Hive 3.0版本即将支持[2]。

此外,请遵循以下指南,为您的环境提供必要的Hive插件配置[3]。您可以省略"hive.metastore.sasl.enabled"、"hive.server2.enable.doAs"one_answers"hive.metastore.execute.setugi"属性,因为您已经指定了默认值[4]。关于"hive.metastore.uris"one_answers"fs.default.name",您应该为它们指定与hive-site.xml.中相同的值

[1]https://drill.apache.org/docs/hive-storage-plugin
[2]https://issues.apache.org/jira/browse/DRILL-6604
[3]https://drill.apache.org/docs/hive-storage-plugin/#hive-远程元存储配置
[4]https://github.com/apache/hive/blob/rel/release-2.3.2/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java#L824

最新更新