Apache Drill查询HBase表

时间:2016-12-04 08:29:00

标签: hadoop hbase apache-drill

我使用drill-embedded来执行SQL,我可以看到HBase中的表。这是终端输出..

enter image description here 但是,我无法对它们执行查询,这是引发以下错误:

 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执行查询所要做的事情。

2 个答案:

答案 0 :(得分:2)

此问题与Hbase更相关。

番石榴罐中有

com.google.common.base.Stopwatch类。

构造函数在版本17或18时更改为包私有。

Stopwatch类的默认构造函数变为private,因为Guava v.17并且甚至更早被标记为已弃用。

好像你正在使用最新版本的番石榴,你可以降低版本并再试一次,它有合适的构造函数。

如果您正在使用maven / gradle,则必须调整符合上述方式的依赖关系。

请查看此问题HBASE-14126已明确解释

答案 1 :(得分:1)

这对我有用:

在apache-drill-1.9.0 / jars / 3rdparty文件夹中用Guava 16 jar替换Guava 18 jar。你可以在这里找到Guava 16 jar:

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/