Impala
impala提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。
Impala的优点
基于内存计算
不使用MR
C++编写计算层,Java编写编译层
兼容大部分HiveSQL
支持数据本地计算
可以使用Impala JDBC访问
Impala的缺点
- 对内存依赖很大
- 完全依赖Hive
- 只能读取文本文件,不能读取二进制文件
- 在Impala更新的数据会同步到Hive,但是在Hive更新的数据不会自动同步到Impala
Impala和关系型数据库的异同
- Impala不支持事务和索引
- Impala可以管理PB级数据,但是关系型数据库只能管理TB
Impala和Hive的异同
- 使用HDFS,HBase储存数据
- 使用相同的元数据
- 使用类似的SQL词法分析生成执行计划
- Impala生成执行计划树,Hive会生成MR模型
- Impala使用拉的方式,后续节点主动拉取前面节点的数据,是流, Hive使用推的方式,前面的节点执行完成后会将数据主动推送给后面的节点
Impala的架构
Impala集群有三个重要的组件,他们分别是Impala Daemon, Impala Statestore和Impala Metastore
Impala Daemon
Impala Daemon(Impalad)在安装Impala的每个节点上运行, 接受来着各种接口的查询,当一个查询提交到某个Impala Daemon的时候,这个节点就充当协调器,将任务分发到集群
Impala State
Impala State负责检测每个Impalad的运行状况,如果某个Impala Daemon发生了故障,则这个消息会被通知到所有其他Impla Daemon
Impala Matestore
Impala Matestore储存表的元数据信息
Impala语法
时间函数【时间差】
1
datediff(now(),to_timestamp(strleft(ftime,10), 'yyyy-MM-dd')) <= 7
字符串求和
1
sum(cast(time as bigint))