介绍: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