package com.hbase.util;
import java.io.IOException;
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.KeyValue;
import org.apache.hadoop.hbase.NamespaceDescriptor;
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.Delete;
import org.apache.hadoop.hbase.client.Get;
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.client.Table;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
public class HbaseUtility {
public static Configuration conf;
public static Connection conn;
/**
* 类级别的初始化,只是在类加载的时候做一次 配置zookeeper的端口2181
* 配置zookeeper的仲裁主机名centos,如果有多个机器,主机名间用冒号隔开 配置hbase master
* 还有一种方式是new一个configuration对象,然后用addresource方法去添加xml配置文件 但是像这样显式的配置是会覆盖xml里的配置的
*/
static {
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.property.clientPort", "2181");
conf.set("hbase.zookeeper.quorum", "centos");
conf.set("hbase.master", "centos:60000");
try {
conn = ConnectionFactory.createConnection(conf);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 建表,建列族
*
* @param tablename,
* @param ColumnFamilys
* NamespaceDescriptor:维护命名空间的信息,但是namespace,一般用shell来建立
* Admin:提供了一个接口来管理 HBase 数据库的表信息
* HTableDescriptor:维护了表的名字及其对应表的列族,通过HTableDescriptor对象设置表的特性
* HColumnDescriptor:维护着关于列族的信息,可以通过HColumnDescriptor对象设置列族的特性
*/
public static void createtable(String tablename, String... ColumnFamilys) throws IOException {
Admin admin = conn.getAdmin();
// admin.createNamespace(NamespaceDescriptor.create("my_ns").build());
// HTableDescriptor table=new
// HTableDescriptor(TableName.valueOf("my_ns"+tablename));
HTab