Apache Phoenix JDBC 驱动和Spring JDBCTemplate的集成

介绍:Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。更多参考官网:http://phoenix.apache.org/

Phoenix实现了JDBC的驱动,使用Phoenix JDBC和普通的数据库(Mysql)JDBC一样,也可以通过Spring JDBCTemplate的方式,将数据库的操作模块化,以及进行数据源,事物方面的管理。

实现步骤如下:

(1)关于Phoenix与Hbase的整合请参考:

编写pom.xml

  <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-core</artifactId>
            <version>4.3.0</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>

(2)如果是windows的开发环境,配置C:\Windows\System32\drivers\etc\hosts文件,添加develop5的配置

192.168.199.242   develop5

(3)配置Spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd

    <bean id="phoenixJdbcTemplate"
          class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg ref="phoenixDataSource"/>
        <qualifier value="phoenixJdbcTemplate"></qualifier>
    </bean>

    <bean id="baseInterfacePonenixImpl" class="com.eric.monitor.dao.impl.HBaseBaseDAOImpl">
        <property name="jdbcTemplate" ref="phoenixJdbcTemplate"/>
    </bean>

    <context:component-scan base-package="com.eric.monitor.dao.impl"/>
    <context:component-scan base-package="com.eric.monitor.service.impl"/>

    <bean id="phoenixDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.apache.phoenix.jdbc.PhoenixDriver"/>
        <property name="url" value="jdbc:phoenix:develop5"/>
        <property name="username" value=""/>
        <property name="password" value=""/>
        <property name="initialSize" value="20"/>
        <property name="maxActive" value="0"/>
        <!--因为Phoenix进行数据更改时不会自动的commit,必须要添加defaultAutoCommit属性,否则会导致数据无法提交的情况-->
        <property name="defaultAutoCommit" value="true"/>
    </bean>
</beans>

(3)编写Java程序

import com.eric.common.framework.dao.HBaseDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 类描述
 *
 * @author aihua.sun
 * @date 2015/3/9
 * @since V1.0
 */

@Repository
public class HBaseBaseDAOImpl implements HBaseDao {

    private JdbcTemplate jdbcTemplate;
    public HBaseBaseDAOImpl(JdbcTemplate template) {
        this.jdbcTemplate = template;
    }
    public HBaseBaseDAOImpl() {
        super();

    }
   public List query(String querySql) {
        return jdbcTemplate.query(querySql);
    }

    @Override
    public void update(String querySql) {
        System.out.println(querySql);
        jdbcTemplate.update(querySql);
    }

    @Override
    public void batchUpdate(String updateSQL) {
        System.out.println("##########BATCH UPDATE:"+updateSQL);
        jdbcTemplate.batchUpdate(updateSQL);
    }

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    @Autowired
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
时间: 2024-10-05 03:40:37

Apache Phoenix JDBC 驱动和Spring JDBCTemplate的集成的相关文章

HBase JDBC驱动Phoenix与SpringJDBCTemplate的集成

Phoenix:Phoenix将SQL查询语句转换成多个scan操作,并编排执行最终生成标准的JDBC结果集. Spring将数据库访问的样式代码提取到JDBC模板类中,JDBC模板还承担了资源管理和异常处理的工作,Phoenix作为JDBC驱动同样可以将其与Spring集成,提高开发效率. 具体操作如下: 1.配置applicationContext.xml <beans xmlns="http://www.springframework.org/schema/beans" x

HBase单机安装及Phoenix JDBC连接

HBase是建立在Hadoop文件系统之上的分布式面向列的数据库,它是横向扩展的.它利用了Hadoop的文件系统(HDFS)提供的容错能力. HBase提供对数据的随机实时读/写访问,可以直接HBase存储HDFS数据. 1.准备 必须JDK1.8+ 下载hbase前,检查本机的Hadoop版本(HBase文档搜索Hadoop version查找): 我这里本地安装的Hadoop版本为2.6,所以使用的HBase版本为HBase-1.3.6. 下载解压: $ tar -xvf hbase-1.3

phoenix连接hbase数据库,创建二级索引报错:Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Tue Mar 06 10:32:02 CST 2018, null, java.net.SocketTimeoutException: callTimeou

环境描述: 操作系统版本:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 phoenix版本:phoenix-4.10.0 hbase版本:hbase-1.2.6 表SYNC_BUSINESS_INFO_BYDAY数据库量:990万+ 问题描述: 通过phoenix客户端连接hbase数据库,创建二级索引时,报下面的错误: 0: jdbc:phoenix:host-10-191-5-226> create index SYNC_BUSI

Mapreduce atop Apache Phoenix (ScanPlan 初探)

利用Mapreduce/hive查询Phoenix数据时如何划分partition? PhoenixInputFormat的源码一看便知: public List<InputSplit> getSplits(JobContext context) throws IOException, InterruptedException { Configuration configuration = context.getConfiguration(); QueryPlan queryPlan = th

org.apache.phoenix.exception.PhoenixIOException: SYSTEM:CATALOG

Error: SYSTEM:CATALOG (state=08000,code=101)org.apache.phoenix.exception.PhoenixIOException: SYSTEM:CATALOG at org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:113) at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDa

Spring 对JDBC的支持(JdbcTemplate)

Spring对数据库的操作,使用JdbcTemplate对象 需要引入相关的jar文件 如版本:(Spring核心jar包就不列了) spring-jdbc-3.2.5.RELEASE.jar spring-tx-3.2.5.RELEASE.jar C3P0连接池:c3p0-0.9.1.2.jar 数据库驱动包:mysql-connector-java-5.1.22-bin.jar 例:(对象的获取及注入通过spring来实现) 核心jdbc操作 1 package test.jdbc; 2 3

各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包

在开发基于数据库的应用系统时.须要在项目中进行数据源的配置来为数据 库的操作取得数据库连接. 配置不同数据库的数据源的方法大体上都是同样的.不同的仅仅是不同数据库的JDBC驱动类和连接URL以及对应的数据库username和密 码不同.以下列出8中经常使用的数据库的数据库数据源配置和对应的JDBC驱动包. 1.Spring中数据源配置格式 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSour

Spring JdbcTemplate 与 事务管理

Spring的JDBC框架能够承担资源管理和异常处理的工作,从而简化我们的JDBC代码, 让我们只需编写从数据库读写数据所必需的代码.Spring把数据访问的样板代码隐藏到模板类之下, 结合Spring的事务管理,可以大大简化我们的代码. Spring提供了3个模板类: JdbcTemplate:Spring里最基本的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问. NamedParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是使

Spring JdbcTemplate 与 事务管理 学习

Spring的JDBC框架能够承担资源管理和异常处理的工作,从而简化我们的JDBC代码, 让我们只需编写从数据库读写数据所必需的代码.Spring把数据访问的样板代码隐藏到模板类之下, 结合Spring的事务管理,可以大大简化我们的代码. Spring提供了3个模板类: JdbcTemplate:Spring里最基本的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问. NamedParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是使