这里先简单介绍下hive,Impala、HBase:
hive:
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。Hive支持HSQL,是一种类SQL。
Impala:
Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL大数据查询工具,Impala没有再使用缓慢的Hive+MapReduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟
HBase:
HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
hive、impala最大的好处和共同点就是可以使用sql语句对habse的数据进行操作,这对于我们java开发人员减少了大量的工作量,而不用像专业的大数据运维人员那样去写脚本。
项目是用mybatis来做持久层的,一开始就是想用mybatis来映射impala的查询。再配置好数据源和查询语句后,用junit测试发现sql语句再执行过程中就报错了,再排除数据源、impala驱动、连接字符串及mybatis的配置后发现依旧报错,再经过几天的折腾后问题依旧没有解决,只能暂时放弃采用原生的JDBC去连接impala(因项目比较紧张,只能后面再研究,可能是mybatis暂不支持impala,后面有位同事也遇到同样的问题)
如果有大牛在mybatis上连接impala成功的话请不吝赐教哈!~
配置impala连接池
<bean id="dataSourcePid" class="com.mchange.v2.c3p0.ComboPooledDataSource"