可以将Impala视为改进版的Hive。
两者都使用SQL语言,且Imapal的SQL是Hive SQL的子集。
Hive慢,Impala快,测试的结果是,常规问题上,Impala比Hive快十倍。有了Impala,Hive就可以不用了。
Impala没有索引。这是一个非常显著的特征,没有索引,就不能快速存取跟顺序有关的记录。Impala可以做排序,但没有对结果进行遍历,也不能快速seek到某条记录。
因此,Impala适应的场景是:
1. 操作非常大的数据,比如T和P级别的数据。
2. 操作对索引没有需求的数据。
它不适合操作数据量太小的数据,少于500M的数据,最好不要用它,跑不出优势。
如果遇到跟索引相关的问题,怎么处理?用sqoop把它转到mysql里解决。我的测试是,myslq对单表500万条记录操作流畅,性能令人满意。可以多台mysql集群同时处理。也可以一个一个处理。
Imapa不适合对外提供服务,在流程上,把结果处理好,放到关系库供前端调用。Impala只存取海量原始数据。
一定不要用Impala处理跟索引存取相关的计算,你挖空心思是能写出这样的代码,但速度会慢到令你震惊!!