`
cp1985chenpeng
  • 浏览: 43839 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java客户端操作Hbase

阅读更多

 

 

java客户端操作Hbase

 

首先,配置好 hadoop+hbase 环境后,确保 hbase 正常启动。

1. 搭建开发环境

         1.1、运行 Eclipse,创建一个新的 Java工程“ HBaseHelloWorld”,右键项目根目录,选择 “ Properties”->“Java Build Path”->“Library”->“Add External JARs”,将 HBase解压后根目录下的 hbase-***.jar hbase-***-tests.jar lib子目录下所有 jar 包添加到本工程的 Classpath下,如图 1所示。

         1.2、按照步骤 1中的操作,将自己所连接的 HBase的配置文件 hbase-site.xml添加到本工程的 Classpath中,如下所示为配置文件的一个示例。

         <configuration>

                <property>

                      <name>hbase.cluster.distributed</name>

                      <value>true</value>

               </property>

               <property>

                     <name>hbase.rootdir</name>

                     <value>hdfs://hostname:9000/hbase</value>

               </property>

               <property>

                     <name>dfs.replication</name>

                     <value>1</value>

               </property>

          </configuration>

2.下面可以在 Eclipse环境下进行 HBase编程了。

具体操作 hbase代码如下:

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Delete;
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.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

public class HBaseJavaAPI {
   
    /**
     * 创建表
     * @throws IOException
     */
    public void createTable(String tableName, String[] columns) throws IOException {
        Configuration conf = HBaseConfiguration.create();
        HBaseAdmin admin = new HBaseAdmin(conf);
        if (admin.tableExists(tableName)) {
            System.out.println("表已经存在!");
        } else {
            HTableDescriptor desc = new HTableDescriptor(tableName);
            for (String column : columns) {
                desc.addFamily(new HColumnDescriptor(column));
            }
            admin.createTable(desc);
            System.out.println("表创建成功!");
        }
    }
   
    /**
     * 插入一行记录
     * @param tablename
     *             表名
     * @param row
     *             行名称
     * @param columnFamily
     *             列族名
     * @param columns
     *             (列族名:column)组合成列名
     * @param values
     *             行与列确定的值
     */
    public void insertRecord(String tablename, String row, String columnFamily, String[] columns, String[] values) {
        try {
            Configuration conf = HBaseConfiguration.create();
            HTable table = new HTable(conf, tablename);
            Put put = new Put(Bytes.toBytes(row));
            for (int i = 0; i < columns.length; i++) {
                put.add(Bytes.toBytes(columnFamily),
                        Bytes.toBytes(String.valueOf(columns[i])),
                        Bytes.toBytes(values[i]));
                table.put(put);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
   
    /**
     * 删除一行记录
     * @param tablename
     *             表名
     * @param rowkey
     *             行名
     * @throws IOException
     */
    public void deleteRow(String tablename, String rowkey) throws IOException {
        Configuration conf = HBaseConfiguration.create();
        HTable table = new HTable(conf, tablename);
        List list = new ArrayList();
        Delete d1 = new Delete(rowkey.getBytes());
        list.add(d1);
        table.delete(list);
        System.out.println("删除行成功!");
    }
   
    /**
     * 查找一行记录
     * @param tablename
     *             表名
     * @param rowkey
     *             行名
     */
    public static void selectRow(String tablename, String rowKey)
            throws IOException {
        Configuration conf = HBaseConfiguration.create();
        HTable table = new HTable(conf, tablename);
        Get g = new Get(rowKey.getBytes());
        Result rs = table.get(g);
        for (KeyValue kv : rs.raw()) {
            System.out.print(new String(kv.getRow()) + "  ");
            System.out.print(new String(kv.getFamily()) + ":");
            System.out.print(new String(kv.getQualifier()) + "  ");
            System.out.print(kv.getTimestamp() + "  ");
            System.out.println(new String(kv.getValue()));
        }
    }
   
    /**
     * 查询表中所有行
     * @param tablename
     */
    public void scanAllRecord(String tablename) {
        try {
            Configuration conf = HBaseConfiguration.create();
            HTable table = new HTable(conf, tablename);
            Scan s = new Scan();
            ResultScanner rs = table.getScanner(s);
            for (Result r : rs) {
                KeyValue[] kv = r.raw();
                for (int i = 0; i < kv.length; i++) {
                    System.out.print(new String(kv[i].getRow()) + "  ");
                    System.out.print(new String(kv[i].getFamily()) + ":");
                    System.out.print(new String(kv[i].getQualifier()) + "  ");
                    System.out.print(kv[i].getTimestamp() + "  ");
                    System.out.println(new String(kv[i].getValue()));
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
   
    /**
     * 删除表操作
     * @param tablename
     * @throws IOException
     */
    public void deleteTable(String tablename) throws IOException {
        try {
            Configuration conf = HBaseConfiguration.create();
            HBaseAdmin admin = new HBaseAdmin(conf);
            admin.disableTable(tablename);
            admin.deleteTable(tablename);
            System.out.println("表删除成功!");
        } catch (MasterNotRunningException e) {
            e.printStackTrace();
        } catch (ZooKeeperConnectionException e) {
            e.printStackTrace();
        }
    }

}

 

分享到:
评论
1 楼 henry_qi 2014-12-11  
[b][/b]                            

相关推荐

    HBase的Java客户端源码

    HBASE的java版本的客户端,运行代码需要设定环境变量且打包成jar文件运行

    hbase客户端连接工具winutils-2.2.0.zip

    该资源为java客户端连接hbase集群,在windows客户端配置hadoop环境所需要用到的工具类,有需自取

    hbase的java客户端api操作示例代码.zip

    hbase的java客户端api操作示例代码

    四种数据库(MySQL,HBase,Redis,MongoDB)的Java客户端所需jar包.zip

    hbase的JAVA客户端所需jar包 jedis的JAVA客户端所需jar包 mongo的JAVA客户端所需jar包 MySQL的JAVA客户端所需jar包 大数据——四种数据库(MySQL,HBase,MongoDB,Redis)操作实例总结:...

    HBaseClient:HBase客户端数据管理软件

    HBase客户端数据管理软件 概要说明 类似PL/SQL,是一个HBase数据库的客户端数据管理软件。是免费开源的软件。 基于XJava,使用xml配置文件绘制可视化界面。 可视化界面操作 表 表的定义、编辑、删除; 数据 数据的...

    java使用hbase-1.2版本需要的最小的jar包

    java客户端连接hbase所需要的最少的jar包集合,这个我用的hbase1.2.1的,大家用的版本可能是有稍许的差别(但是这个jar包应该可以用),不过所需要的包名是一样的,只是版本不一样而已,可以根据具体的需要修改为...

    阿里巴巴开源的Hbase Client node-hbase-client.zip

    完全通过 HBase 0.94 和 0.94.16Java hbase-client支持 HBase 服务器的版本[√] 0.94.x[√] 0.94.0[√] 0.94.160.95.x0.96.x安装$ npm install hbase-client使用 CRUD:通过 zookeeper 创建 HBase 客户端:var ...

    高性能HBase客户端AsynchronousHBase.zip

    asynchbase 是 Java 库使用 HBase 的替代品,要求一个完全异步,非阻塞,线程安全,高性能的 HBase API。这个 HBase 客户端跟 HBase 的客户端 HTable 有着很大的区别,不需要重写所有的 HBase API 交互代码,原生...

    hbase 0.9 api

    hbase 基于java的客户端api操作hbase数据库

    phoenix-5.0.0-HBase-2.0-client.jar

    hbase phoenix 客户端连接jdbc的jar包,SQuirreL SQL Client,DbVisualizer 等客户端连接hbase配置使用

    毕业设计-基于java+HBase实现的手机数据备份系统(短信、联系人、重要文件).zip

    HBase操作类-------&gt;HBaseUtil.java 短信操作类--------&gt;Sms.java 联系人操作类------&gt;Contact.java 文件操作类--------&gt;MyFile.java 上面的Action都配置到Struts.xml中。 Client端介绍: 封装了三个实体bean ...

    java操作zookeeper相关jar包

    主要是java操作zookeeper的client包,在源生api基础上进行扩展的开源JAVA客户端

    hbase权威指南

    使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;了解HBase架构的细节,包括存储格式、预写日志、后台进程等;在HBase中集成MapReduce框架;了解如何调节集群、设计模式...

    HBase权威指南

    使用本地java客户端,或者通过提供了rest、avro和thrift应用编程接口的网关服务器来访问hbase;了解hbase架构的细节,包括存储格式、预写日志、后台进程等;在hbase中集成mapreduce框架;了解如何调节集群、设计模式...

    Hbase中文文档

    8.1. 安全客户端访问 HBase 8.2. 访问控制 9. 架构 9.1. 概述 9.2. Catalog Tables 9.3. 客户端 9.4. Client Request Filters 9.5. Master 9.6. RegionServer 9.7. Regions 9.8. Bulk Loading 9.9. HDFS 10. 外部 ...

    Hbase权威指南(HBase: The Definitive Guide)

     ■使用本地java客户端,或者通过提供了rest、avro和thrift应用编程接口的网关服务器来访问hbase  ■了解hbase架构的细节,包括存储格式、预写日志、后台进程等等  ■在hbase中集成用于海量并行数据处理任务的...

    HBase权威指南中文版

    使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;让你了解HBase架构的细节,包括存储格式、预写日志、后台进程等等;在HBase中集成用于海量并行数据处理任务的Hadoop的...

    HBASE指南中文

    使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;了解HBase架构的细节,包括存储格式、预写日志、后台进程等;在HBase中集成MapReduce框架;了解如何调节集群、设计模式...

    HBase权威指南(中文版).pdf

    使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;了解HBase架构的细节,包括存储格式、预写日志、后台进程等;在HBase中集成MapReduce框架;了解如何调节集群、设计模式...

Global site tag (gtag.js) - Google Analytics