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后顯示字段的別名

-----------------------------------

有待進一步整理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM