欢迎投稿

今日深度:

HBase封装类,

HBase封装类,


最近需要用到HBase数据库。但是文件数据库不支持SQL脚本,用起来太麻烦了。

而且他的设计模式,还无法使用反射之类的方式实现自动填充。所以为了尽可能的提高易用性,找到一个开源框架吧。

其实知识进行了一个初步的操作封装。叫做hbase.dsl。

记录一下。

原始HBase代码

public class PutAndGet 
{   
	public static void main(String[] args) throws IOException 
	{     
		HTable hTable = new HTable(“test”);     
		byte[] rowId = Bytes.toBytes(“abcd”);     
		byte[] famA = Bytes.toBytes(“famA”);     
		byte[] col1 = Bytes.toBytes(“col1”);     
		Put put = new Put(rowId).add(famA, col1, Bytes.toBytes(“hello world!”));    
		hTable.put(put);     
		Get get = new Get(rowId);     
		Result result = hTable.get(get);     
		byte[] value = result.getValue(famA, col1);     		System.out.println(Bytes.toString(value));   
	} 
}

DSL代码

public class PutAndGetWithDsl 
{   
	public static void main(String[] args) throws IOException 
	{     
		HBase<QueryOps, String> hBase = new HBase<QueryOps, String>(String.class);  
		hBase.save(“test”).row(“abcd”).family(“famA”).col(“col1”,“hello world!”);     
		String value = hBase.fetch(“test”).row(“abcd”).family(“famA”).value(“col1”, String.class);     
		System.out.println(value);   
	} 
}

查询HBase代码

public class Scanner 
{   
	public static void main(String[] args) throws IOException 
	{     
		byte[] famA = Bytes.toBytes(“famA”);     
		byte[] col1 = Bytes.toBytes(“col1”);       
		HTable hTable = new HTable(“test”);       
		Scan scan = new Scan(Bytes.toBytes(“a”), Bytes.toBytes(“z”));     
		scan.addColumn(famA, col1);       
		SingleColumnValueFilter singleColumnValueFilterA = new 		SingleColumnValueFilter(famA, col1, CompareOp.EQUAL, Bytes.toBytes(“hello world!”));     
		singleColumnValueFilterA.setFilterIfMissing(true);       		SingleColumnValueFilter singleColumnValueFilterB = new 		SingleColumnValueFilter(famA, col1, CompareOp.EQUAL, Bytes.toBytes(“hello hbase!”));     
		singleColumnValueFilterB.setFilterIfMissing(true);       
FilterList filter = new FilterList(Operator.MUST_PASS_ONE, Arrays         .asList((Filter) singleColumnValueFilterA,             		singleColumnValueFilterB));       
		scan.setFilter(filter);       
		ResultScanner scanner = hTable.getScanner(scan);       
		for (Result result : scanner) 
		{       
			System.out.println(Bytes.toString(result.getValue(famA, col1)));     
		}   
	} 
}

查询DSL代码

public class ScannerWithDsl 
{   
	public static void main(String[] args) throws IOException 
	{     
		HBase<QueryOps, String> hBase = new HBase<QueryOps, String>(String.class);  
		hBase.scan(“test”,“a”,“z”).select().family(“famA”).col(“col1”).where().family(“famA”).col(“col1”).eq(“hello world!”,“hello hbase!”).foreach(new ForEach<Row>() 
		{         
			@Override         
			public void process(Row row) 
			{           
				System.out.println(row.value(“famA”, “col1”, String.class));         
			}       
		});   
	} 
}

DSL ByteArray代码

public class UsingBytes 
{   
	public static void main(String[] args) 
	{     
		HBase<QueryOps, String> hBase = new HBase<QueryOps, String>(String.class);  
		byte[] rowId = Bytes.toBytes(“1234”);     
		byte[] helloworld = Bytes.toBytes(“hello world!”);     
		hBase.save(“test”).row(rowId).family(“famA”).col(“col1”, helloworld); 
		Iterable<Row<byte[]>> it = hBase.scan(“test”).where().family(“famA”).col(“col1”).eq(helloworld);       
		for (Row<byte[]> row : it) 
		{       
			byte[] value = row.value(“famA”, “col1”, byte[].class);       
			System.out.println(Bytes.toString(value));     
		}   
	} 
}



www.htsjk.Com true http://www.htsjk.com/hbase/39816.html NewsArticle HBase封装类, 最近需要用到HBase数据库。但是文件数据库不支持SQL脚本,用起来太麻烦了。 而且他的设计模式,还无法使用反射之类的方式实现自动填充。所以为了尽可能的提高易用性...
相关文章
    暂无相关文章
评论暂时关闭