java调用Hbase API 出现org.apache.hadoop.hbase.protobuf.generated.ClientProtos$Result overrides final 错误_hbase编译 org.apache.hadoop.hbase.shaded.protobuf.ge_IT_xhf的博客-程序员宅基地

技术标签: hive  hadoop  hbase  

今天写了一段简单的java代码调用Hbase的API,代码如下:

public class HbaseApi {
	private HTable hTable ;
	private String tableName;
	public HbaseApi(String tableName) throws IOException {
		this.tableName = tableName;
		HBaseConfiguration hconfig = new HBaseConfiguration();
		hconfig.set("hbase.zookeeper.property.clientPort","2181");
		hconfig.set("hbase.zookeeper.quorum", "192.168.179.130");  
		hTable = new HTable(hconfig, this.tableName.getBytes());
	}
	
	public void scan(String family, String qualifier) throws IOException {
		Scan scan = new Scan();
		scan.addColumn(family.getBytes(), qualifier.getBytes());
		
		ResultScanner scanner = hTable.getScanner(scan);
		
		for(Result result = scanner.next(); result != null; result = scanner.next() ) {
		}
	}
	
	public static void main(String[] args) {
		try {
			new HbaseApi("teacher").scan("teacher", "info");;
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}


执行的时候出现错误:从错误上看,应该是Hbase的一个类重载了protobuf-java的一个final方法导致的。我使用hadoop的版本是2.2.0, Hbase版本是0.96,protobuf的版本是2.5.如有大神遇到相同的问题,请提供以下解决方法,再此谢过

java.io.IOException: java.lang.reflect.InvocationTargetException
    at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:389)
    at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:366)
    at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:247)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:188)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:165)
    at com.hadoop.study.hbase.HbaseApi.<init>(HbaseApi.java:19)
    at com.hadoop.study.hbase.HbaseApi.main(HbaseApi.java:34)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:387)
    ... 6 more
Caused by: java.lang.VerifyError: class org.apache.hadoop.hbase.protobuf.generated.ClientProtos$Result overrides final method getUnknownFields.()Lcom/google/protobuf/UnknownFieldSet;
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at org.apache.hadoop.hbase.protobuf.ProtobufUtil.<clinit>(ProtobufUtil.java:172)
    at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64)
    at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:69)
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:801)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:633)
    ... 11 more


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/IT_xhf/article/details/37963993

智能推荐

Visual Studio Code 终端无法使用问题-已解决_Andy Chen 陈郑游的博客-程序员宅基地

百度那么多都没有解决啊!!!然后自己静下心来,随便打开一个文件,然后右键选择‘在终端打开’快捷键:Ctrl + `

css绘画扇形_css扇形_一枚前端猿的博客-程序员宅基地

css中绘画半圆形: &lt;div class="semi-sector"&gt;&lt;/div&gt; .semi-sector { height: 50px; width: 100px; border-radius: 50px 50px 0 0; /* border-radius 要等于圆的半径*/ background-color: red; }css绘画任意角度的扇形:思路:先画一个圆,然后再用 absolute 绝

electron11.x+vue-cli4.x实现vue项目打包为桌面应用_南方北方_k的博客-程序员宅基地

一直想用electron把vue项目打包成桌面应用,网上找教程发现都是vue-cli2.x的,用的人真少导致更新不及时。好在终于在b站上找到了一个解决方案,记录一下。一、新建vue项目vue create test二、进入test项目,安装electron-buildercd testvue add electron-builder选择版本最新的(写这篇文章时版本为11.x)这个过程中可能会卡在electron-builder依赖包的下载中,导致超时失败,如果没有可以跳过下面的步骤==

html下拉框选择后自动刷新,HTML中页面刷新下拉框内容不改变_迷荆的博客-程序员宅基地

川8级2009-10-31 回答既然是分页, 那肯定会保存有当前页了, 一般都是放到url里面去保存, 比如这样 url?currentPage=3写个JS, 记得select里面的option要给个ID 可以定义为 optionId_3window.onload = function(){//先获取URL参数var url = location.href;var paraString = url...

推荐算法工程师的成长之道__Kevin_Duan_的博客-程序员宅基地

推荐算法工程师的成长之道原创: gongyouliu 大数据与人工智能 3月20日源链接:原文地址本文,作者会基于自己的实践经验讲述推荐算法工程师的成长之道,这里的“道”有发展路径和道(道理、方法论、经验、智慧)两层意思。所以本文除了讲解推荐算法工程师的成长路径之外,还会详细阐述推荐算法工程师需要了解的方法论和智慧。相信读者读完本文会更加坚信推荐算法工程师是一个好的职业选择,...

spring boot starter 入门示例_springboot starter 示例_蜗牛_snail的博客-程序员宅基地

示例一依赖&lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;version&gt;2.3.1.RELEASE&lt;/version&gt;&lt;/parent&gt;&lt;dependencies&gt; &lt;dependency&g

随便推点

CDA Level 1 数据分析师:4.3 统计分布_cda二项分布_一只小Demo的博客-程序员宅基地

CDA Level 1 数据分析师:4.3 统计分布常用分布离散型:连续型:抽样分布常用分布离散型:1. 伯努利分布X~B(1, p) 摸两个颜色小球。n = 1 时,二项分布又称为两点分布 P1= X P2 = 1-X2. 二项分布X~B(n, p) 有放回的摸球连续型:1. 正态分布 X~N(μ,σ²) 连续型数据累计分布的倒数:是密度函数。 通过密度函数可以计算面积的方式计算概率,即为小于等于该处的概率。2. 标准正态抽样分布1. 卡方分布 Y~χ²(n) 1.

关于使用google map实现周边搜索的功能_google地图的url 邻近搜索参数_U__F_O的博客-程序员宅基地

由于公司项目是针对美国市场,所以接入的是google定位谷歌地图sdk不像高德地图或者百度地图那么好接入,一方面是纯英文,还有一方面国外文档习惯我们并不习惯,大多写得很简略我的项目要实现附近宠物店的搜索和附近宠物医院的搜索,在接入谷歌地图用到了以下几个包:&quot;com.google.android.gms:play-services-maps:15.0.1&quot;&quot;com.google....

安装与初次使用Nmap_rhel6安装nmap_Eva_94的博客-程序员宅基地

Nmap的官方介绍https://nmap.org Nmap(“网络映射器”)是用于网络发现和安全审核的免费开放源代码(许可证)实用程序。许多系统和网络管理员还发现它对于诸如网络资源清册、管理服务升级计划、监视主机或服务正常运行时间等任务非常有用。Nmap以新颖的方式使用原始IP包来确定网络上可用的主机、这些主机提供的服务(应用程序名称和版本)、它们运行的操作系统(和操作系统版本)、正在使用的...

android高德地图marker多个点_amap.marker改成散点_smile_tear的博客-程序员宅基地

本人也有做过百度地图的marker,但是百度地图的引用实在很麻烦,各种导包,so,jar,还有配置。所以高德就比较方便了。只需引用下面的几句  定位  地图 导航  全都ok!compile 'com.amap.api:3dmap:5.6.0'compile 'com.amap.api:location:3.7.0'compile 'com.amap.api:search:5.5.

使用appassembler-maven-plugin构建发布包_西伯利亚疯狂的蚯蚓的博客-程序员宅基地

使用该包的特点是可以自动生成两套执行文件:linux、windows主要通过pom.xml配置并辅以编译命令完成构建:&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML...

按位“或”赋值运算符 (|=)_按位或赋值_小小的花园里面挖挖挖的博客-程序员宅基地

对变量值与表达式值执行按位“或”操作,并将结果赋给该变量。result |= expression参数result任何数值变量。表达式任何数值表达式。备注使用此运算符的效果基本上与指定 result =

推荐文章

热门文章

相关标签