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后顯示字段的別名
-----------------------------------
有待進一步整理