当前位置: 代码迷 >> Eclipse >> eclipse停使用javaapi连接hbase记录
  详细解决方案

eclipse停使用javaapi连接hbase记录

热度:88   发布时间:2016-04-23 01:09:23.0
eclipse下使用javaapi连接hbase记录

1.hadoop工程已经配置好,把hbase目录放到windows下,用来导入jar包。

2.确保windowshosts文件配置完成,确保java环境配置完成。

3.创建hadoop工程,把hbase下的jar包全部导入工程,不清楚到底需要哪个包,注意,可能你的hbase下的包不全,网上搜索。这里创建一个普通的工程,把hadoopjar包导入工程也可以。

4.新建一个类输入代码如下:(前提是先创建了一个database的表)

package hbase1;

 

 

import java.io.IOException;

 

 

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.client.HBaseAdmin;

import org.apache.hadoop.hbase.util.Bytes;

 

 

public class test{

public static void main(String[] args) throws IOException {

Configuration conf = HBaseConfiguration.create(); 

 

conf.set("hbase.zookeeper.quorum", "testhd2");

HBaseAdmin admin = new HBaseAdmin(conf);

HTableDescriptor tableDescriptor = admin.getTableDescriptor(Bytes.toBytes("database"));

byte[] name = tableDescriptor.getName();

System.out.println(new String(name));

HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();

for (HColumnDescriptor d : columnFamilies) {

System.out.println(d.getNameAsString());

System.out.println("12345");

}

}

这里注意testhd2zookeeper的服务器,不要连接namenode。应该把所有的zookeeper都写上,‘,’隔开,写一个也可以

 

5.可能会遇到错误

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/protobuf/Message

at org.apache.hadoop.hbase.io.HbaseObjectWritable.<clinit>(HbaseObjectWritable.java:263)

at org.apache.hadoop.hbase.ipc.Invocation.write(Invocation.java:139)

at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.sendParam(HBaseClient.java:638)

at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:1001)

at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:150)

at $Proxy5.getProtocolVersion(Unknown Source)

at org.apache.hadoop.hbase.ipc.WritableRpcEngine.getProxy(WritableRpcEngine.java:183)

at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:335)

at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:312)

at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:364)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getMaster(HConnectionManager.java:682)

at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:110)

at hbase1.test.main(test.java:20)

Caused by: java.lang.ClassNotFoundException: com.google.protobuf.Message

这是因为缺少jar包,是缺少hbase/lib下的protobuf-java-2.4.1.jar包,这里用了个稍微有点差别的版本成功了,最好用对应的版本。有了jar包,导入工程后,成功。

  相关解决方案