`
dalan_123
  • 浏览: 86909 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

spring hadoop系列(四) --- spring hadoop hbase

阅读更多
一、源码分析
/**
*
* hbase 采用aop的拦截器,将hbase table绑定对应的线程在被调用之前;
* 一旦对应的调用方法获取结果之后将关闭并移除
* 如果有一个已经绑定的table(来自前面的call或者transaction),
* 那么 interceptor 只是简单的操作
* 同时interceptor经常与HbaseSynchronizationManager结合使用
* @author Costin Leau
*/
public class HbaseInterceptor extends HbaseAccessor implements MethodInterceptor {

private static final Log log = LogFactory.getLog(HbaseInterceptor.class);
        // 是否进行异常转换(1、输出异常链信息 2、输出原始异常信息)
private boolean exceptionConversionEnabled = true;
        // hbase要进行绑定的table name
private String[] tableNames;

        // 判断table name 集合是否为空
public void afterPropertiesSet() {
super.afterPropertiesSet();
Assert.notEmpty(tableNames, "at least one table needs to be specified");
}
  
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
                // 存放table name 与 hbase table 关联映射
Set<String> boundTables = new LinkedHashSet<String>();
                // 通过HbaseSynchronizationManager判断对应的table name
                // 是否已经绑定
                // 若是没有绑定 则根据tableName、hbase Configuration
                // 、charset、table factory构建HTableInterface对象
                // 完成绑定之后,执行方法调用;并返回处理结果
for (String tableName : tableNames) {
if (!HbaseSynchronizationManager.hasResource(tableName)) {
boundTables.add(tableName);
HTableInterface table = HbaseUtils.getHTable(tableName, getConfiguration(), getCharset(), getTableFactory());
HbaseSynchronizationManager.bindResource(tableName, table);
}
}

try {
Object retVal = methodInvocation.proceed();
return retVal;
} catch (Exception ex) {
                        // 根据exceptionConversionEnabled的内容
                        // 输出异常信息链
if (this.exceptionConversionEnabled) {
throw convertHBaseException(ex);
}
else {
                        // 若是exceptionConversionEnabled为false
                        // 则只输出原始异常
throw ex;
}
} finally {
                        // 方法调用完成之后 要将前面绑定的table
                        // 执行release操作
for (String tableName : boundTables) {
HTableInterface table = (HTableInterface) HbaseSynchronizationManager.unbindResourceIfPossible(tableName);
if (table != null) {
HbaseUtils.releaseTable(tableName, table);
}
else {
log.warn("Table [" + tableName + "] unbound from the thread by somebody else; cannot guarantee proper clean-up");
}
}
}
}
        //
private Exception convertHBaseException(Exception ex) {
return HbaseUtils.convertHbaseException(ex);
}

public void setTableNames(String[] tableNames) {
this.tableNames = tableNames;
}

/**
* Sets whether to convert any {@link IOException} raised to a Spring DataAccessException,
* compatible with the <code>org.springframework.dao</code> exception hierarchy.
* <p>Default is "true". Turn this flag off to let the caller receive raw exceptions
* as-is, without any wrapping.
* @see org.springframework.dao.DataAccessException
*
* @param exceptionConversionEnabled enable exceptionConversion
*/
public void setExceptionConversionEnabled(boolean exceptionConversionEnabled) {
this.exceptionConversionEnabled = exceptionConversionEnabled;
}
}
该类主要使用hbase table之前完成bind的操作;完成table name到具体的hbase table之间的映射;不过在执行完成对应的操作之后来释放绑定的资源
分享到:
评论

相关推荐

    spring-data-hadoop-2.1.1.RELEASE-hadoop24-sources.jar

    Java操作hbase完成hbase数据文件下载

    spring-boot-starter-hbase.zip

    Spring Boot Starter Hbase 是一个专为简化HBase操作而设计的框架组件,它与Spring Boot紧密结合,提供了在Java应用程序中轻松集成和操作HBase数据库的能力。这个压缩包"spring-boot-starter-hbase.zip"包含了所有...

    spring-data-hadoop-1.0.0源码包

    2. **数据访问接口**:Spring Data Hadoop定义了一系列的Repository接口,如`HadoopRepository`,使得开发者可以通过声明式的方式操作Hadoop数据。这些接口的实现通常基于Hadoop的API,如`FileSystem`和`JobConf`,...

    spring-data-hadoop-1.0.1.RELEASE.zip

    Spring Data Hadoop是Spring框架的一部分,它为开发人员提供了一种简单的方式来使用Hadoop生态系统的组件,如HDFS、MapReduce和HBase等。在1.0.1.RELEASE这个版本中,它继续致力于简化Hadoop编程模型,让Java开发者...

    phoenix+spring+hbase

    phoenix +hbase+spring 整合技术 phoenix +hbase+spring 整合技术 phoenix +hbase+spring 整合技术 根据需要 下载 集成的jar phoenix-core-4.13.0-HBase-0.98.jar

    Spring-Boot-HBase-RESTful:Spring-Boot-Hbase-RESTful

    Spring-Boot-HBase-RESTful Spring-Boot-HBase-RESTful ##安装 brew install hadoop hbase zookeeper## HBase入门 start-hbase.sh start sudo /usr/local/Cellar/zookeeper/3.4.8/bin/zkServer start参考示例代码: ...

    spring-data-hadoop官方文档

    Spring Data Hadoop官方文档涉及了多个关于如何使用Spring Data Hadoop框架及其与Hadoop生态系统的集成的相关知识点。以下为文档中提到的主要知识点: 1. **Hadoop基本配置、MapReduce和分布式缓存**: - Spring ...

    hbase jar包.zip

    首先,hbase-client-2.2.4.jar是HBase客户端的核心库,它提供了与HBase服务器交互的API,包括数据的读写、扫描、行键操作等。这个版本的HBase客户端已经对HBase 2.2.4进行了优化,确保了与服务端的兼容性和性能。 ...

    spring-hadoop 环境集成

    在Spring 3.0版本之后,Spring Data Hadoop开始被引入,为开发者提供了一套声明式的编程模型,用于处理Hadoop的MapReduce任务、HDFS操作以及HBase等组件的集成。 在集成Spring 3和Hadoop 0.2.0时,首先需要确保安装...

    spring-hadoop.pdf

    - **使用DAO**:Spring for Apache Hadoop提供了对HBase的数据访问对象支持,简化了与HBase的交互。 ```java public interface HBaseDao extends HBaseOperations { // 定义HBase操作方法 } ``` #### 六、与Hive...

    基于SpringMVC+Spring+HBase+Maven搭建的Hadoop分布式云盘系统.zip

    这是一个基于Java技术栈,利用SpringMVC、Spring、HBase和Maven构建的Hadoop分布式云盘系统的项目。该项目旨在实现一个高效的、可扩展的云存储解决方案,利用Hadoop的分布式特性来处理大规模数据存储需求。 首先,...

    spring data hadoop reference

    Spring Hadoop 提供了一系列工具和 API 来与 HBase 集成,这使得开发者可以更容易地访问 HBase 数据。 #### 五、Hive 集成 ##### 5.1 启动 Hive Server Hive 是一个基于 Hadoop 的数据仓库工具,可以使用 SQL 查询...

    基于springboot集成hbase过程解析

    * hbase-client:提供了HBase的客户端依赖项,版本号为1.1.2。 * spring-data-hadoop:提供了Hadoop的依赖项,版本号为2.5.0.RELEASE。 知识点3:HBase的配置 HBase的配置可以通过XML文件或注解方式进行。下面是一...

    spring-hadoop官方文档

    Spring for Apache Hadoop 提供了 Spring 框架用于创建和运行 Hadoop MapReduce、Hive 和 Pig 作业的功能,包括 HDFS 和 HBase。如果你需要简单的基于 Hadoop 进行作业调度,你可添加 Spring for Apache Hadoop 命名...

    spring操作hbase demo

    &lt;artifactId&gt;hbase-client &lt;version&gt;2.x.x &lt;groupId&gt;org.apache.hbase &lt;artifactId&gt;hbase-protocol &lt;version&gt;2.x.x &lt;groupId&gt;org.apache.hbase &lt;artifactId&gt;hbase-common &lt;version&gt;2.x.x ``` ...

    hadoop-2.5.2.tar.gz

    Hadoop 2.5.2是在Hadoop 2.x系列中的一个稳定版本,它引入了许多重要的改进和优化,以提高性能、可靠性和易用性。 Hadoop主要由两个关键组件构成:HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一种...

    搭建hadoop单机版+hbase单机版+pinpoint整合springboot.zip

    安装步骤包括解压HBase的tar.gz文件,配置`hbase-site.xml`以指向Hadoop的配置,然后启动HBase的各种进程(RegionServer、Master等)。通过HBase shell或者Java API,我们可以测试插入和查询数据,验证HBase的功能。...

    spring与hbase集成

    Spring 是一个强大的 Java 应用框架,提供了丰富的依赖注入、AOP(面向切面编程)和模块化功能,而 HBase 是基于 Hadoop 的分布式列式数据库,适用于实时读写和大规模数据存储。下面我们将详细探讨如何将 Spring 与 ...

    基于hadoop+hbase+springboot实现分布式网盘系统.zip

    在构建分布式网盘系统时,通常会涉及到多个技术栈,如大数据处理框架Hadoop、分布式数据库HBase以及微服务开发框架Spring Boot。本项目“基于hadoop+hbase+springboot实现分布式网盘系统”旨在利用这些技术搭建一个...

Global site tag (gtag.js) - Google Analytics