首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

eclipse停使用javaapi连接hbase记录

2013-10-16 
eclipse下使用javaapi连接hbase记录1.hadoop工程已经配置好,把hbase目录放到windows下,用来导入jar包。2.确

eclipse下使用javaapi连接hbase记录

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

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

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

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");

}

}

这里注意testhd2是zookeeper的服务器,不要连接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包,导入工程后,成功。

热点排行