Hive和Impala的区别
1、执行速度不同:
Hive:底层基于Hadoop的MapReduce引擎,计算过程中经常要走shuffle过程,速度比较慢
Impala:底层基于内存,执行效率高,是Hive执行速度的5-50倍之间。
2、使用的函数之间有区别:
Hive:使用 concat() | concat_ws() 函数,连接的字段类型没有限制
Impala:使用 concat() | concat_ws() 函数,连接的字段类型必须是string类型
-------------------------
Hive:中有split(执行字段,指定切分符 ) [指定返回的列标] 函数 注意:索引以0开始
Impala:中有split_part(执行字段,指定切分符,指定返回的列标 ) 函数 注意:索引以1开始
3、关键字之间的区别:
hive: group by 后不能使用字段的别名
Impala:group by 后可以使用字段的别名
4、函数使用的不同
hive中concat() | concat_ws()函数可以拼接不同类型的字段
impala中concat() | concat_ws()函数只能拼接string类型的字段。如果不是string类型,需要使用cast(字段 as string)
一般SQL的执行顺序:可以参考:MySQL中的注意事项 - SailorG - 博客园 (cnblogs.com)
- from
- join on
- where
- group by
- having
- select
- distinct
- union
- order by
在hive中group by后不能使用select后显示字段的别名
在Impala、MySQL等【有待进一步验证】数据库中group by后面可以使用select后显示字段的别名
-----------------------------------
有待进一步整理