Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。
Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询。
在impala中一条SQL语句先后经历BeeswaxService.Query->TClientRequest->TExecRequest,最后把TExecRequest交由impala-coordinator分发给多个backend处理。
查询语句:
show table status students;
describe students;
impala优化:
>explain sql; #查看执行计划
>profile; #输出底层信息计划
>summary;#查看查询时间及占用内存
注意项:
1)Join的时候大表一定要放在左边,因为impala在广播右侧表,所以右侧表会复制到需要右侧表进行联接的所有节点。
2)广播连接(Broadcast joins) 是默认方式,右侧的表被认为比左侧的表小,并且它的内容被发送到查询涉及到的其他节点上。替代的技术称作分割连接(partitioned join) (与分区表无关),更适用于近乎相同大小的大型表的连接。使用这一技术,每一个表的部分内容被发送到对应的其他节点,然后这些行的子集可以并行处理。广播和分区连接的选择仍然依赖于连接中所有表的可用的