基于Java操作HBase数据库

参考资料:http://www.linezing.com/blog/?p=713

代码如下:

package com.yuxipacific;

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 HBase {

	private static Configuration conf = null;
	
	static {
	    conf = HBaseConfiguration.create();
	    conf.set("hbase.zookeeper.quorum", "slave");
	    conf.set("hbase.zookeeper.property.clientPort", "2222");
	}
	
	public static void main(String[] args) throws IOException {
		
		System.out.println("-------------------------------------------------");
		selectRow("xyz", "100");
		System.out.println("-------------------------------------------------");
		writeRow("xyz", "cf1", "val", "500", "test_data");
		System.out.println("-------------------------------------------------");
		scaner("xyz");
	}
	
	public static void createTable(String tablename, String[] cfs) throws IOException {
	    HBaseAdmin admin = new HBaseAdmin(conf);
	    if (admin.tableExists(tablename)) {
	        System.out.println("table already exist.");
	    }
	    else {
	        HTableDescriptor tableDesc = new HTableDescriptor(tablename);
	        for (int i = 0; i < cfs.length; i++) {
	            tableDesc.addFamily(new HColumnDescriptor(cfs[i]));
	        }
	        admin.createTable(tableDesc);
	        System.out.println("create table ok.");
	    }
	}

	public static void deleteTable(String tablename) throws IOException {
	    try {
	        HBaseAdmin admin = new HBaseAdmin(conf);
	        admin.disableTable(tablename);
	        admin.deleteTable(tablename);
	        System.out.println("delete table ok.");
	    } catch (MasterNotRunningException e) {
	        e.printStackTrace();
	    } catch (ZooKeeperConnectionException e) {
	        e.printStackTrace();
	    }
	}

	public static void writeRow(String tablename, String family, String qualifier, String rowKey, String value) {
	    try {
	        HTable table = new HTable(conf, tablename);
	        Put put = new Put(Bytes.toBytes(rowKey));
            put.add(Bytes.toBytes(family),  Bytes.toBytes(qualifier), Bytes.toBytes(value));
            table.put(put);
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	}
	
	public static void deleteRow(String tablename, String rowkey) throws IOException {
	    HTable table = new HTable(conf, tablename);
	    List<Delete> list = new ArrayList<Delete>();
	    Delete delete = new Delete(rowkey.getBytes());
	    list.add(delete);
	    table.delete(list);
	    System.out.println("delete row ok.");
	}

	public static void selectRow(String tablename, String rowKey) throws IOException {
	    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()));
	    }
	}
	
	public static void scaner(String tablename) {
	    try {
	        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();
	    }
	}
}

假设已经整合了Hive和Hbase:http://blog.csdn.net/kunshan_shenbin/article/details/7210689

如果在这里插入新的数据,我们完全可以通过Hive把记录都查询出来:http://blog.csdn.net/kunshan_shenbin/article/details/7214491

package com.yuxipacific;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Hive {

	public static void main(String[] args) throws Exception {
		
		Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
		String querySQL="SELECT * FROM hbase_table_1";
        
        Connection con = DriverManager.getConnection("jdbc:hive://192.168.11.124:10000/default", "", "");
        Statement stmt = con.createStatement();
        ResultSet res = stmt.executeQuery(querySQL);
        
        while (res.next()) {
            System.out.println("Result: key:"+res.getString(1) +"  –>  value:" +res.getString(2));
        }
	}
}
更多Java操作代码,参阅: https://cwiki.apache.org/confluence/display/Hive/HiveClient

其他资料:

http://blog.csdn.net/karen_wang/article/details/6283729

http://qa.taobao.com/?p=13894

http://www.javabloger.com/article/apache-hbase-shell-and-java-api-html.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值