【问题标题】:Querying Hive from Apache Drill causes Stackoverflow error从 Apache Drill 查询 Hive 导致 Stackoverflow 错误
【发布时间】:2015-12-07 19:25:54
【问题描述】:

我正在尝试在钻机的配置单元中查看名为 customers 的表。我在嵌入式模式下使用 Drill。我正在为 hive 元存储使用默认的 derby 数据库。

当我进行描述时,它会显示所有列和类型。

但是,当我执行这样的选择命令时,

select * from customers limit 10;

在 Web UI 中,这就是我得到的

org.apache.drill.common.exceptions.UserRemoteException:系统错误:StackOverflowError

Hive 插件:

 {
  "type": "hive",
  "enabled": true,
  "configProps": {
    "hive.metastore.uris": "thrift://ip_address:9083",
    "javax.jdo.option.ConnectionURL": "jdbc:derby:;databaseName=../sample-data/drill_hive_db;create=true",
    "hive.metastore.warehouse.dir": "/user/hive/warehouse",
    "fs.default.name": "file///",
    "hive.metastore.sasl.enabled": "false"
  }
}

日志文件中显示的错误:

org.apache.drill.exec.work.foreman.ForemanException:意外 片段初始化期间的异常:java.lang.AssertionError: 内部错误:应用规则 DrillPushProjIntoScan 时出错,

java.lang.StackOverflowError: null at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:355) ~[hadoop-common-2.7.1.jar:na]

最后是这个

查询失败:org.apache.drill.common.exceptions.UserRemoteException: 系统错误:堆栈溢出错误

而且,我使用的版本是:

阿帕奇钻:1.3.0

蜂巢:0.13.1-cdh5.3.0

Hadoop:2.5.0-cdh5.3.0

【问题讨论】:

  • 我可以从 hive 查询同一个表,但是钻头会抛出这个错误。
  • 您是从 Drill shell 还是 Drill Web UI 尝试?钻嵌入式还是集群模式?
  • 我从 UI 和 shell 都试过了。他们都说,Stackoverflow 错误
  • 我已经编辑了这个问题。添加了存储插件信息。
  • 你能检查一下hadoop中的/user/hive/warehouse目录吗?我希望你填写了来自hive-site.xml的所有值

标签: sql hadoop hive stack-overflow apache-drill


【解决方案1】:

我猜这是版本冲突。

根据 Drill 的文档:

Drill 1.0 支持 Hive 0.13。 Drill 1.1 支持 Hive 1.0。

因此,对于 1.1+,您可能会遇到 hive 0.13 的问题。 阅读更多here

所以将 hive 升级到 1.0 或将钻子降级到 1.0 来测试一下。

【讨论】:

  • 我已经将 Drill 降级到 v1.0,这一次我收到一个新错误,Error while applying rule DrillPushProjIntoScan, 后跟每个列名和 $(number)。类似于 Column1=$0,column2=$1 等等。
  • 我明天将尝试使用 Drill 1.0 和 hive 0.13,以便重现相同的问题..
猜你喜欢
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 2018-04-19
相关资源
最近更新 更多