博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用eclipse开发hbase程序
阅读量:4658 次
发布时间:2019-06-09

本文共 5636 字,大约阅读时间需要 18 分钟。

 
一:在eclipse创建一个普通的java项目
二:新建一个文件夹,把hbase需要的jar放进去,我这里把hbase/lib/*.jar 下所有的jar都放进去了,最后发现就用到了下面三个jar包
hadoop-common-2.6.4.jarhbase-common-1.2.4.jarhbase-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+CELLhbase:namespace,,1482832588064.6899522395b4ee74 column=info:regioninfo, timestamp=1482832590934, value={ENCODED => 6899522395b4ee74d8a55be4b8f31fb9, NAME => 'hbase:namespace,,1482832588064.6d8a55be4b8f31fb9. 899522395b4ee74d8a55be4b8f31fb9.', STARTKEY => '', ENDKEY => ''}hbase:namespace,,1482832588064.6899522395b4ee74 column=info:seqnumDuringOpen, timestamp=1483554191715, value=\x00\x00\x00\x00\x00\x00\x00\x0Dd8a55be4b8f31fb9.hbase:namespace,,1482832588064.6899522395b4ee74 column=info:server, timestamp=1483554191715, value=hadoop-node4.com:16201d8a55be4b8f31fb9.hbase:namespace,,1482832588064.6899522395b4ee74 column=info:serverstartcode, timestamp=1483554191715, value=1483554113504d8a55be4b8f31fb9.student,,1482855412525.d49d109d9fe387bdcda9f748 column=info:regioninfo, timestamp=1482855420324, value={ENCODED => d49d109d9fe387bdcda9f748f2d959e3, NAME => 'student,,1482855412525.d49d109d9f2d959e3. fe387bdcda9f748f2d959e3.', STARTKEY => '', ENDKEY => ''}student,,1482855412525.d49d109d9fe387bdcda9f748 column=info:seqnumDuringOpen, timestamp=1483554191720, value=\x00\x00\x00\x00\x00\x00\x00\x0Df2d959e3.student,,1482855412525.d49d109d9fe387bdcda9f748 column=info:server, timestamp=1483554191720, value=hadoop-node4.com:16201f2d959e3.student,,1482855412525.d49d109d9fe387bdcda9f748 column=info:serverstartcode, timestamp=1483554191720, value=1483554113504f2d959e3.student_1,,1483556027914.ded9aeece2edc985bf9999 column=info:regioninfo, timestamp=1483556033173, value={ENCODED => ded9aeece2edc985bf9999d0744fad1e, NAME => 'student_1,,1483556027914.ded9aeed0744fad1e. ce2edc985bf9999d0744fad1e.', STARTKEY => '', ENDKEY => ''}3 row(s) in 0.4820 seconds
 
(这个异常是因为我的eclipse工程里没有hbase-site.xml文件,所以操作是habse默认的。因为我在创建表后,对表进行操作虽然报错,但是我重启集群之后,再对表进行操作就没问题了,所以我觉得是ecplise的问题,不是hbase的问题,查看hbase:meta数据也是正常的)

 

转载于:https://www.cnblogs.com/zhangXingSheng/p/6277257.html

你可能感兴趣的文章
oracle 批量插入和批量更新
查看>>
2017-2018-2 1723《程序设计与数据结构》第二周作业 总结
查看>>
delete
查看>>
Android 手机卫士--md5加密过程
查看>>
PGM图片格式与代码
查看>>
jsp内置对象-session
查看>>
SLP读书笔记之 n-gram 语言模型
查看>>
前端工程师的基本素养
查看>>
94. Binary Tree Inorder Traversal 二叉树中序遍历
查看>>
Shell脚本之sed详解
查看>>
hdu-1862 EXCEL排序
查看>>
rsync+inotify
查看>>
Mybatis学习(壹)
查看>>
Android高效加载大图、多图解决方案,有效避免程序OOM
查看>>
异常处理
查看>>
快速排序的期望复杂度O(nlogn)证明。
查看>>
c# 连接mysql并webservice数据
查看>>
bing Map 在多语言的vue项目中的使用
查看>>
DataGrip导出查询结果数据
查看>>
2019春第三次实验报告
查看>>