hbase Phoenix整合到mybatis DruidDataSource很简单,和整合mysql的方式一样,因为都是jdbc的方式。
原本在我的代码中是有mysql的数据库连接池的,我是使用扫描不同包来实现多数据源的。
<!-- hbase datasource --> <bean id="hbaseDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="org.apache.phoenix.jdbc.PhoenixDriver" /> <property name="url" value="master,slave1" /> <property name="username" value="root" /> <property name="password" value="123456" /> <property name="connectionProperties" value="phoenix.query.timeoutMs=1200000;hbase.rpc.timeout=1200000;hbase.client.scanner.timeout.period=1200000;" /> </bean> <bean id="hbaseSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="hbaseDataSource" /> <property name="mapperLocations"> <list> <value>classpath*:net/itxw/hbaseDao/mapper/*Mapper.xml </value> </list> </property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="net.itxw.data.synchronize.hbaseDao" /> <property name="sqlSessionFactoryBeanName" value="hbaseSqlSessionFactory" /> </bean>
注:我要着重解释的是connectionProperties,是单独指定connection的属性,我这里指定的phoenix.query.timeoutMs=1200000;hbase.rpc.timeout=1200000;hbase.client.scanner.timeout.period=1200000;
是解决phoenix操作超时的问题,默认只有60秒,当然服务端也要相应配置。