标签:
最近在做web项目使用到了Hadoop,HBase,在这里对Spring For Hadoop(SHDP)的使用做个总结,主要使用了SHDP中提供的一些封装好的HBase模块。本博客将分两部分写:
1.对Spring For Hadoop--Working With HBase的基本认识
SHDP对HBase和Spring进行了整合,开发者可以通过这个框架可以很轻易地对HBase进行操作。(可以联想使用Spring+Hibernate那样来操作数据库)
SHDP提供了通过hbase-configuration来设置HBase的配置文件:如:
<!-- default bean id is ‘hbaseConfiguration‘ that uses the existing ‘hadoopCconfiguration‘ object --> <hdp:hbase-configuration configuration-ref="hadoopCconfiguration" />
<!-- delete associated connections but do not stop the proxies --><hdp:hbase-configuration stop-proxy="false" delete-connection="true"> foo=bar property=value </hdp:hbase-configuration>
<!-- specify ZooKeeper host/port -->
<hdp:hbase-configuration zk-quorum="${hbase.host}" zk-port="${hbase.port}">
<hdp:hbase-configuration properties-ref="some-props-bean" properties-location="classpath:/conf/testing/hbase.properties"/>
DAO的支持
SHDP通过org.springframework.data.hadoop.hbase包为HBase提供为DAO的支持,通过HbaseTemplate
和其他几个回调函数如TableCallback
,RowMapper
,ResultsExtractor
可以轻易的实现HBase表的查询,数据的查询,扫描器的准备和一些结果的分析,极大的提高了开发效率
此DAO的核心是HbaseTemplate
,一个与HBase进行交互的高层抽象类,这个类的使用需要设置HBase的配置,一旦设置成功后就HbaseTemplate
就是线程安全的,可以在同一时间内被多个实例重复使用(间接的达到了HBase连接池的效果,HBase连接池在一些需要频繁的访问HBase的web项目非常重要!!!!)
// default HBase configuration <hdp:hbase-configuration/> // wire hbase configuration (using default name ‘hbaseConfiguration‘) into the template <bean id="htemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate" p:configuration-ref="hbaseConfiguration"/>
HbaseTemplate
还为表的执行逻辑或者结果及行的提取提供了通用的回调函数
// writing to ‘MyTable‘ template.execute("MyTable", new TableCallback<Object>() { @Overridepublic Object doInTable(HTable table) throws Throwable { Put p = new Put(Bytes.toBytes("SomeRow")); p.add(Bytes.toBytes("SomeColumn"), Bytes.toBytes("SomeQualifier"), Bytes.toBytes("AValue")); table.put(p); return null; } });
// read each row from ‘MyTable‘ List<String> rows = template.find("MyTable", "SomeColumn", new RowMapper<String>() { @Override public String mapRow(Result result,int rowNum) throws Exception{ return result.toString(); } }));
HbaseTemplate
外,org.springframework.data.hadoop.hbase通过HbaseInterceptor类
和
HbaseSynchronizationManager
Spring For Hadoop--Working With HBase(一)
标签:
原文地址:http://www.cnblogs.com/MOBIN/p/5153086.html