设为首页 收藏本站
查看: 720|回复: 0

[经验分享] Spring for Apache Hadoop 的 reference HBase支持部分

[复制链接]

尚未签到

发表于 2016-12-12 10:05:20 | 显示全部楼层 |阅读模式
<!--[if !supportLists]-->7.1. <!--[endif]-->HBase
SHDP通过hbase-configuration命名空间元素为HBase提供了基本的配置。
<!—default bean id is ‘hbaseConfiguration’ that uses the existing ‘hadoopConfiguration’ object -->
<hdp:hbase-configuration configuration-ref=”hadoopCconfiguration” />
上面的声明不仅仅是简单地创建了一个HBase配置对象,它还管理这个HBase后端的连接:当应用的上下文关闭时断开连接,所以HBase任何打开的连接都可以通过stop-proxydelete-connection属性进行调整。
<!--delete associated connections but do not stop the proxies-->
<hdp:hbase-configuration stop-proxy=”flase” delete-connection=”true” >
       foo=bar
       property=value
</hadp:hbase-configuration>
另外,可以设置HBase Server使用的ZooKeeper端口当连接到一个远程实例时非常有用(注意,可以完整地配置HBase包括Zookeeper的主机端口HBase)。
<!—spacify Zookeeper host/port - ->
<hdp:hbase-configuration zk-quorm=”${hbase.host}” zk-port=”${hbase.port}” />
像其他的元素一样,可以向这个配置设定额外的属性。实际上,hbase-configuration提供了和hadoop 配置一样的属性配置。
<hdp:hbase-configuration properties-ref=”some-props-bean” properties-location=”classpath:/conf/testing/hbase.properties” />
7.1. DAO支持
Spring FrameWork里最受欢迎和最强大的一个功能是数据访问对象(DAO)。它使处理数据访问技术变得简单和一致,并且以最小的代价进行调换或者连系上述持久化存储(不用担心捕捉的异常,样板式的代码或者以及资源的获取和处理)。我们建议阅读Spring Framework的参考文档而不是在此重申DAO支持的价值所在。
SHDP通过org.springframework.data.hadoop.hbase包为Apache HBase提供了同样的功能:HbaseTemplate与其他几个回调函数例如TableCallbackRowMapperResultExtractor 一起为查找HBase的表、运行查询、扫描器准备、结果分析剔除了底层冗长无趣的细节,使开发者专注于真正的工作。
DAO支持的核心是HbaseTemplate—一个与HBase交互的高层抽象类。Template需要一个HBase的配置,一旦设置完成,template就是线程安全的,可以在同一时间内多个实例间重用。
// default HBase configuration
<hdp:hbase-configuration/>
//  hbase的配置链接到template
<bean id=”htemplate” class=”org.springframework.data.hadoop.hbase.HbaseTemplate” p:configuration-ref=”hbaseConfiguration”/>
Template为对表的运算逻辑或者产生结果或者行提取提供了通用的回调函数,而且为一般操作提供了工具方法。下面是template如何使用的例子:
// writing to ‘MyTable’
template.execute(“MyTable”, new TableCallback<Object>(){
       @Override
       Public 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();
}
});
第一段代码展示了通用的TableCallback,它完成了table的定位和资源的清理,因此用户代码就无需再做了。注意回调函数的签名—HBase API抛出的任何异常都被自动捕捉,转换为Spring DAO的异常,并且资源清理被显式地执行。第二个例子展示了专用的查询方法这个例子中是find方法,如方法名所示找到所有符合给定条件的行用户代码可以对每一个记录进行操作(一般是一些类型转换排序或者映射)。如果需要获取整个结果集,可以使用ResultsExtractor代替RowMapper
          除template外,这个包通过HbaseInterceptorHbaseSyncronizationManager类提供了自动将HBase表绑定给当前线程的支持。意味着,每个在HBase上执行DAO操作的类都可以被HbaseInterceptor包装,因此每个在用的表一旦被发现都会绑定给这个线程,任何后来对这个类的调用都可以避免查找表。调用结束时,表被自动关闭,所以在请求之间没有泄露。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-313128-1-1.html 上篇帖子: Hadoop中的RPC机制分析(基于Java NIO机制) 下篇帖子: 菜鸟玩云计算之十一:Hadoop 手动安装指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表