Apache Drill 查询 HBase 表
Posted
技术标签:
【中文标题】Apache Drill 查询 HBase 表【英文标题】:Apache Drill query HBase table 【发布时间】:2016-12-04 08:28:59 【问题描述】:我正在使用 Drill-embedded 执行 SQL,我可以看到 HBase 中的表。这是终端输出..
但是,我无法对它们执行查询,这是引发以下错误:
0: jdbc:drill:zk=local> SELECT * FROM students;
Error: SYSTEM ERROR: IllegalAccessError: tried to access method
com.google.common.base.Stopwatch.<init>()V from class
org.apache.hadoop.hbase.zookeeper.MetaTableLocator
[Error Id: 9c656263-c774-4aaf-a789-d4e374adb69b on localhost:31010]
(state=,code=0)
请让我知道我必须做什么才能在 Drill 上执行查询,提前致谢。
【问题讨论】:
你能运行这个看看它给出了什么:select count(*) from hbase.`students`; 感谢@SrihariKaranth,学生表包含 4 条记录,我刚刚用钻 1.6 试了一下,它工作正常,因为一些博客表明依赖关系存在一些问题。 现在我的配置是 hadoop 2.7、hbase 1.2.4 和 Drill 1.6... 使用相同的 hbase 和 hadoop 配置的 Drill 1.8 可能存在一些问题...但是我将运行查询您建议并让您知道... 【参考方案1】:这个问题与 Hbase 的关系更大。
com.google.common.base.Stopwatch
类存在于番石榴罐中。
构造函数在版本 17 或 18 更改为包私有。
自 Guava v.17 起,Stopwatch
类的默认构造函数变为 private
,并且更早标记为已弃用。
好像你用的是最新版本的番石榴,你可以降低版本再试一次,有合适的构造函数。
如果您使用的是 maven/gradle,则必须调整依赖项以适应上述方式。
请看一下这个问题HBASE-14126 解释清楚了
【讨论】:
亲爱的 Ram,我是新用户,这是我的第一个问题/帖子,所以当时我不能承认,这是不允许的(因为我当时的声誉不到 15 ),现在您可以看到更改...再次感谢您的回复...【参考方案2】:这对我有用:
用 apache-drill-1.9.0/jars/3rdparty 文件夹中的 Guava 16 jar 替换 Guava 18 jar。你可以在这里找到番石榴 16 罐:
https://github.com/google/guava/wiki/Release16
来源:https://blogs.perficient.com/delivery/blog/2017/05/15/how-to-configure-tableau-and-drill-to-show-data-from-hbase-hive/
【讨论】:
以上是关于Apache Drill 查询 HBase 表的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apache Drill 查询嵌套的复杂 json 结构
Apache Drill 与 mongodb。在地图中查询具有特定键和值的文档
我可以在 Raspberry Pi 上运行 Apache Drill 并发现查询计划的物理成本吗?