一:在eclipse创建一个普通的java项目
二:新建一个文件夹,把hbase需要的jar放进去,我这里把hbase/lib/*.jar 下所有的jar都放进去了,最后发现就用到了下面三个jar包
hadoop-common-2.6.4.jar
hbase-common-1.2.4.jar
hbase-client-1.2.4.jar

三:
将你在服务器中配置的hbase-site.xml文件复制到ecplise工程里(在工程的跟目录下新建一个文件夹命名conf,右键conf文件--->build path---->use as source folder)

 
 
四:新创建一个测试类,就可以写代码了
package com.zhang.insert;

import java.io.IOException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Test; public class HbaseInsert1 {
public static Log log=LogFactory.getLog(HbaseInsert1.class);
public static String tableName="employees";//表名
public static String columnFamily="student_name";//列族
public static String rowFamily="h2";//行键
static Configuration conf=null; static{
Configuration confi=new HBaseConfiguration().create();
conf=confi;
//指定zookeeper
conf.set("hbase.zookeeper.quorum", "node4");
System.setProperty("hadoop.home.dir", "E:\\hadoop-2.6.4");//设置hadoop的安装目录,如果在eclipse已经设置过可以不用设置 }
/**
* 创建表
* HBaseAdmin
* HTableDescriptor
*/
@Test
public void testCreateTable(){ HBaseAdmin admin=null;
HTableDescriptor htd=null;
try {
admin=new HBaseAdmin(conf);
//判断要创建的表是否已经存在
if(admin.tableExists(al_TableName)){
System.out.println(tableName+"表已经存在");
return;
}else{
htd=new HTableDescriptor(al_TableName.getBytes());
//设置列族
htd.addFamily(new HColumnDescriptor(columnFamily));
admin.createTable(htd);
System.out.println(tableName+"表创建成功!!!");
}
}catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除表
*/
@Test
public void testDeletTable(){
HBaseAdmin admin=null;
try {
admin=new HBaseAdmin(conf);
if(admin.tableExists(tableName)){
System.out.println("table is exits");
//如果表存在,则注为失效状态
admin.disableTable(tableName);//删除表
admin.deleteTable(tableName);
System.out.println("删除成功");
}
} catch (IOException e) {
e.printStackTrace();
}
 
问题:
1,在创建表的时候抛出异常
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
这个异常是因为你缺少winutils.exe
需要下载这个文件,然后放到你的/hadoop/bin/  即可
2:
2017-01-04 22:20:05,567 INFO [main-SendThread(127.0.0.1:2181)] zookeeper.ClientCnxn (ClientCnxn.java:logStartConnect(975)) - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
下面异常是因为连接的zk不对,需要指定你的zk
Configuration conf=new HBaseConfiguration().create();
conf.set("hbase.zookeeper.quorum", "node4");//node4 是你的服务器的名称
 
3:这个异常是我在创建表后,使用'scan'和'put'都会抛出下面错误
ERROR: No server address listed in hbase:meta for region employess_info,,1483706778862.6d09a04dec7bfba654d6b393ba966534. containing row
 
我使用 scan 'hbase:meta'查询hbase元数据
ROW COLUMN+CELL
hbase:namespace,,1482832588064.6899522395b4ee74 column=info:regioninfo, timestamp=1482832590934, value={ENCODED => 6899522395b4ee74d8a55be4b8f31fb9, NAME => 'hbase:namespace,,1482832588064.6
d8a55be4b8f31fb9. 899522395b4ee74d8a55be4b8f31fb9.', STARTKEY => '', ENDKEY => ''}
hbase:namespace,,1482832588064.6899522395b4ee74 column=info:seqnumDuringOpen, timestamp=1483554191715, value=\x00\x00\x00\x00\x00\x00\x00\x0D
d8a55be4b8f31fb9.
hbase:namespace,,1482832588064.6899522395b4ee74 column=info:server, timestamp=1483554191715, value=hadoop-node4.com:16201
d8a55be4b8f31fb9.
hbase:namespace,,1482832588064.6899522395b4ee74 column=info:serverstartcode, timestamp=1483554191715, value=1483554113504
d8a55be4b8f31fb9.
student,,1482855412525.d49d109d9fe387bdcda9f748 column=info:regioninfo, timestamp=1482855420324, value={ENCODED => d49d109d9fe387bdcda9f748f2d959e3, NAME => 'student,,1482855412525.d49d109d9
f2d959e3. fe387bdcda9f748f2d959e3.', STARTKEY => '', ENDKEY => ''}
student,,1482855412525.d49d109d9fe387bdcda9f748 column=info:seqnumDuringOpen, timestamp=1483554191720, value=\x00\x00\x00\x00\x00\x00\x00\x0D
f2d959e3.
student,,1482855412525.d49d109d9fe387bdcda9f748 column=info:server, timestamp=1483554191720, value=hadoop-node4.com:16201
f2d959e3.
student,,1482855412525.d49d109d9fe387bdcda9f748 column=info:serverstartcode, timestamp=1483554191720, value=1483554113504
f2d959e3.
student_1,,1483556027914.ded9aeece2edc985bf9999 column=info:regioninfo, timestamp=1483556033173, value={ENCODED => ded9aeece2edc985bf9999d0744fad1e, NAME => 'student_1,,1483556027914.ded9aee
d0744fad1e. ce2edc985bf9999d0744fad1e.', STARTKEY => '', ENDKEY => ''}
3 row(s) in 0.4820 seconds
 
(这个异常是因为我的eclipse工程里没有hbase-site.xml文件,所以操作是habse默认的。因为我在创建表后,对表进行操作虽然报错,但是我重启集群之后,再对表进行操作就没问题了,所以我觉得是ecplise的问题,不是hbase的问题,查看hbase:meta数据也是正常的)

使用eclipse开发hbase程序的更多相关文章

  1. windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法

    按此文章<Hadoop集群(第7期)_Eclipse开发环境设置>进行MapReduce开发环境搭建的过程中遇到一些问题,饶了一些弯路,解决办法记录在此: 文档目的: 记录windows环 ...

  2. Eclipse开发Android程序如何在手机上运行

    android开发不论是在真机上调试还是最终发布到真机上都非常简单,过程如下: 1.安装usb驱动 手机要能与电脑相连,当然要安驱动了.效果就是你插入手机,电脑显示驱动已识别.驱动安装的官方教程:ht ...

  3. Eclipse开发JavaWeb程序报Server Tomcat v7.0 at localhost was unable to start

    出处:http://www.javaweb1024.com/info/582.jspx 原因重现: Eclipse开发JavaWeb程序,启动Servers的Tomcat服务器,突然跳出弹出框,内容显 ...

  4. [b0007] windows 下 eclipse 开发 hdfs程序样例

    目的: 学习使用hdfs 的java命令操作 相关: 进化: [b0010] windows 下 eclipse 开发 hdfs程序样例 (二) [b0011] windows 下 eclipse 开 ...

  5. [b0011] windows 下 eclipse 开发 hdfs程序样例 (三)

    目的: 学习windows 开发hadoop程序的配置. [b0007] windows 下 eclipse 开发 hdfs程序样例 太麻烦 [b0010] windows 下 eclipse 开发 ...

  6. [b0010] windows 下 eclipse 开发 hdfs程序样例 (二)

    目的: 学习windows 开发hadoop程序的配置 相关: [b0007] windows 下 eclipse 开发 hdfs程序样例 环境: 基于以下环境配置好后. [b0008] Window ...

  7. 006 01 Android 零基础入门 01 Java基础语法 01 Java初识 06 使用Eclipse开发Java程序

    006 01 Android 零基础入门 01 Java基础语法 01 Java初识 06 使用Eclipse开发Java程序 Eclipse下创建程序 创建程序分为以下几个步骤: 1.首先是创建一个 ...

  8. scala IDE for Eclipse开发Spark程序

    1.开发环境准备 scala IDE for Eclipse:版本(4.6.1) 官网下载:http://scala-ide.org/download/sdk.html 百度云盘下载:链接:http: ...

  9. eclipse开发Android程序sdk和avd的图标不见了

    在eclipse中开发我们的Android程序时,安装sdk是必不可少的,有时候会出现sdk和avd的图标都不见了的情况,一般出现这种情况的原因是你从别处copy了一个sdk的包然后直接在引用造成的, ...

随机推荐

  1. PyCharm配置gitHub远程仓储

    在一个团队里,编码不能是闭门造车,git学起来: 1. GIT的基本介绍.安装及使用教程- @廖雪峰 2. pycharm配置github远程仓储- @谢小小XH

  2. Python的Web编程[0] -> Web客户端[0] -> 统一资源定位符 URL

    统一资源定位符 / URL 目录 URL 构成 URL 解析 URL 处理 1 URL构成 统一资源定位符(Uniform Resource Locator) 是对可以从互联网上得到的资源的位置和访问 ...

  3. USACO 4.4.2 追查坏牛奶 oj1341 网络流最小割问题

    描述 Description 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候,有三聚氰胺的牛奶已经进入了送货网.这个送货网很大,而且关 ...

  4. POJ2796 Feel Good(单调栈)

    题意:给一个非负整数序列,求哪一段区间的权值最大,区间的权值=区间所有数的和×区间最小的数. 用单调非递减栈在O(n)计算出序列每个数作为最小值能向左和向右延伸到的位置,然后O(n)枚举每个数利用前缀 ...

  5. Hibernate使用Criteria去重distinct+分页

    写在前面: 最近在项目中使用了Criteria的分页查询,当查询的数据没有重复的记录还好,但是当数据有关联并出现重复记录的时候,就要去重,那么就会出现查询的记录数与实际的不一致的问题.这里也记录一下解 ...

  6. 隐藏服务器真实IP的方法来防止DDOS攻击

    2017-08-22 作者:小唐 点击: 10,500次 在无盘系统的环境下,服务器软件存在漏洞,就容易受到DDOS攻击,隐藏服务器真实IP是解决问题最好的方法,下面小编与大家分享一下隐藏服务器真实I ...

  7. 使用Python3解压gz、tar、tgz、zip、rar五种格式的压缩文件例子

    使用Python3解压如下五种压缩文件:gz.tar.tgz.zip.rar 简介 gz: 即gzip,通常只能压缩一个文件.与tar结合起来就可以实现先打包,再压缩. tar: linux系统下的打 ...

  8. 使用PHPEXCEL导入数据到数据库

    导出功能参考:http://www.cnblogs.com/zhouqi666/p/5978017.html 比较严重的问题:当遇到excel数据量比较大的时候,会发生内存溢出的情况,目前无法解决 e ...

  9. ios开发中APP底部上滑不能调出如WiFi、蓝牙、播放等的设置页面的解决的方法

    在开发的APP中我们通常通过手动底部上滑来调出WiFi.蓝牙.飞行模式等的设置页面.有时我们开发的APP无法调出. 解决的方法: 进入iPhone "设置" --> &quo ...

  10. Flume推送数据到SparkStreaming案例实战和内幕源码解密

    本期内容: 1. Flume on HDFS案例回顾 2. Flume推送数据到Spark Streaming实战 3. 原理绘图剖析 1. Flume on HDFS案例回顾 上节课要求大家自己安装 ...