Hadoop apachedrill查询HBase表

Hadoop apachedrill查询HBase表,hadoop,hbase,apache-drill,Hadoop,Hbase,Apache Drill,我正在使用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 o

我正在使用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)
0:jdbc:drill:zk=local>SELECT*FROM student;
错误:系统错误:IllegaAccess错误:尝试访问方法
com.google.common.base.Stopwatch.()V来自课堂
org.apache.hadoop.hbase.zookeeper.MetaTableLocator
[本地主机上的错误Id:9c656263-c774-4aaf-a789-d4e374adb69b:31010]
(状态=,代码=0)
请让我知道我必须做些什么才能对演练执行查询,提前谢谢。

此问题与Hbase更相关。
com.google.common.base.Stopwatch
类存在于番石榴罐中

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

自Guava v.17以来,
Stopwatch
类的默认构造函数变成了
private
,并在更早的时候标记为弃用

看起来您使用的是最新版本的guava,您可以降低版本,然后重试使用合适的构造函数

如果您使用的是maven/gradle,您必须调整依赖项以适应上述方式

请看清楚解释的这个问题

这对我很有用:

将apache-drill-1.9.0/jars/3rdparty文件夹中的Guava 18 jar替换为Guava 16 jar。您可以在这里找到番石榴16罐:


来源:

你能运行这个程序并查看它给出的结果吗:从hbase中选择count(*).`students`;感谢@SrihariKaranth,student表包含4条记录,我刚刚用drill 1.6尝试过,效果很好,因为一些博客建议依赖项存在一些问题。现在我的配置是hadoop 2.7、hbase 1.2.4和drill 1.6。。。具有相同hbase和hadoop配置的drill 1.8可能存在一些问题。。。不过,我会运行您建议的查询并让您知道…亲爱的Ram,我是一个新用户,这是我的第一个问题/帖子,所以我当时无法确认,这是不允许的(因为我当时的声誉低于15),现在您可以看到更改。。。再次感谢您的回复。。。