使用Java连接到远程HBase服务

2024-03-07

我有一个小示例代码,我在其中尝试建立与远程 HBase 实体的连接。该代码在未安装 HBase 的 Windows 计算机上运行,​​我尝试连接到已安装并运行该代码的远程 Ubuntu 服务器。下面代码片段中的 IP 当然只是一个占位符。

代码如下:

public static void main(String[] args) {

    Configuration conf = HBaseConfiguration.create();
    HBaseAdmin admin = null;

    String ip = "10.10.10.10";
    String port = "2181";

    conf.set("hbase.zookeeper.quorum", ip);
    conf.set("hbase.zookeeper.property.clientPort", port);

    try {
        admin = new HBaseAdmin(conf);
        boolean bool = admin.tableExists("sensor_data");
        System.out.println("Table exists? " + bool);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

但由于某种原因我收到此错误:

org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator
at org.apache.hadoop.hbase.client.RpcRetryingCaller.translateException(RpcRetryingCaller.java:229)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:202)
at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320)
at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295)
at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160)
at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:155)
at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:811)
at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:303)
at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:313)
at com.twoBM.Tests.HBaseWriter.main(HBaseWriter.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator
at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:596)
at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:580)
at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:559)
at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:61)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1185)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1152)
at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:153)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:61)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
... 15 more

我正在使用 Gradle 构建我的项目,目前我只使用以下两个依赖项:

compile 'org.apache.hive:hive-jdbc:2.1.0'
compile 'org.apache.hbase:hbase:1.1.6'

有谁知道如何解决这个问题?我尝试用谷歌搜索这个问题,但没有找到任何提供实际解决方案的链接。

此致


这绝对是谷歌番石榴 https://github.com/google/guava的依赖冲突。默认构造函数Stopwatch自 Guava v.17 起,该类就成为私有的,并且更早地被标记为已弃用。

因此,要使 HBase Java 客户端正常工作,您需要 Guava v.16 或更早版本。检查构建应用程序的方式(Maven/Gradle/Classpath)并找到使用 Guava v.17+ 的依赖项。之后,您就可以解决冲突。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Java连接到远程HBase服务 的相关文章

随机推荐

  • 一种用于膨胀/收缩(偏移、缓冲)多边形的算法

    我如何 膨胀 多边形 也就是说 我想做类似的事情 要求是新 膨胀 多边形的边 点与旧 原始 多边形的边 点都处于相同的恒定距离 在示例图片上它们不是 因为那时它必须使用弧来膨胀顶点 但是让我们暂时忘记这一点 我正在寻找的数学术语实际上是向内
  • Vue cli 3 在构建后执行一些任务

    我在用vue cli 3这是我的vue config js const path require path const webpack require webpack const publicDir public const isProdu
  • Three.js 中“THREE.OrbitControls”中的相机位置发生变化

    The THREE OrbitControls当加载初始相机位置时工作正常 但是当使用按钮单击更改相机位置和相机旋转时 相机的位置发生变化 但是单击画布在新视图上旋转相机时 相机的位置突然发生变化 Camera Camera new THR
  • 将 SID 存储在变量中

    我需要一种方法将当前用户的 SID 存储在变量中 我尝试了很多变体 setlocal enableextensions for f tokens a in wmic path win32 useraccount where name Use
  • Web API 中的每个请求 DependencyResolver

    在 MVC 中 一个ModelValidatorProvider被实例化并调用以验证每个请求的模型 这意味着在 DI 环境中 它可以依赖于单个请求范围内的对象 例如工作单元或数据库上下文 在 Web API 中 这似乎已经发生了重大变化 不
  • 需要哪种算法来做到这一点?

    我有这种形式的数据 对于 x 1 y 是 1 4 6 7 9 18 16 19 之一 对于 x 2 y 是 1 5 7 4 之一 对于 x 3 y 是 2 6 4 8 2 之一 对于 x 100 y 是 2 7 89 4 5 之一 每组中只
  • 断言 __init__ 是用正确的参数调用的

    我使用 python 模拟来断言特定对象是使用正确的参数创建的 这就是我的代码的样子 class Installer def init foo bar version Init stuff pass def enter self retur
  • Spring MVC 请求中断钩子

    spring mvc 中是否有注释或其他内容可以让我在客户端关闭连接或以任何方式取消请求时立即调用某些内容 我得到了一个休息服务 通常非常快 但可能取决于用户输入几秒钟 我想在客户端断开连接后立即取消服务器端的处理 我可以实现客户端必须不时
  • 使两个不同长度的向量长度相等

    我有两个不同长度的向量 我怎样才能开始这两个系列 让它们的结局重合 x lt c 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 y lt c 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3
  • 将 Rails + Puma + Postgres 应用程序部署到 Elastic beanstalk 的正确方法是什么?

    我有一个 Rails 5 API 我正在尝试在 Elastic Beanstalk 上 正确地 部署它 这是我的初始config puma rb我使用的文件 threads count ENV fetch RAILS MAX THREADS
  • Ruby Sinatra Hello World `remove_const' 中出现错误:常量 URI::WFKV_ 未定义(NameError)

    只是想让简单的http服务器运行并且对ruby一无所知 usr local lib ruby gems 1 9 1 gems rack 1 3 5 lib rack backports uri common 192 rb 53 in rem
  • Mac 上使用 Komodo 的 Python 宏

    我正在使用 Komodo IDE 版本 6 1 1 内部版本 61234 平台 macosx x86 我还使用 Python 3 2 和 Python 2 7 我有just转而使用 我的第一台 Mac 操作系统版本10 6 在我的 Wind
  • 将序列化的 protobuf 输出转换为 python 字典

    给定一个字符串格式的序列化 protobuf 协议缓冲区 输出 我想把它转换成Python字典 假设这是序列化的 protobuf 以 python 字符串形式给出 person info name John age 20 website
  • 通过括号之间的逗号对字符串进行分组

    响应 正则表达式查找两个字符之间包含的字符串 同时排除分隔符 https stackoverflow com questions 1454913 regular expression to find a string included be
  • 可以将一个按钮覆盖在另一个按钮之上吗?

    我试图将一种按钮覆盖在另一个按钮之上 原因是我想向用户解释某些按钮的作用 例如 会有一个按钮 在该按钮的右上角或其他位置会有一个问号 当用户按下问号时 它会解释该按钮的作用 想到的就是这个 试试吧
  • int LA[] = {1,2,3,4,5} c 中的内存分配混乱

    我观察到为数组分配的内存似乎是动态的 这是我在此找到的示例代码tutorial https www tutorialspoint com data structures algorithms array data structure htm
  • jquery 取消悬停

    我有这个脚本可以在段落内的链接悬停时在段落上显示背景颜色 我不知道该怎么做是在我 取消悬停 后使其返回到原始背景颜色 function box a hover function this parent css background colo
  • 获取最新发布的 YouTube 视频 URL

    我希望有人能够帮助我解决我遇到的问题 目前在我们的网站上 我们有这个页面 http driftgames life instagram http driftgames life instagram 我们使用它作为 Instagram 生物链
  • 一起使用 SQL 和 Pearl - 哪一个应该用于常用功能?

    我没有发现这个问题的任何重复 但如果有一个或多个 我很抱歉 请用链接发表评论 这个问题很基本 答案也可能是这样 如果我使用 Perl 来执行数据库并对其进行操作 那么当涉及共享函数时 我应该将负担放在哪个途径 Perl 与 SQL 上 功能
  • 使用Java连接到远程HBase服务

    我有一个小示例代码 我在其中尝试建立与远程 HBase 实体的连接 该代码在未安装 HBase 的 Windows 计算机上运行 我尝试连接到已安装并运行该代码的远程 Ubuntu 服务器 下面代码片段中的 IP 当然只是一个占位符 代码如