首頁>Club>
13
回覆列表
  • 1 # 使用者834195712159

    主要區別如下:

    1、Hive不支援等值連線

    •SQL中對兩表內聯可以寫成:

    •select * from dual a,dual b where a.key = b.key;

    •Hive中應為

    •select * from dual a join dual b on a.key = b.key;

    而不是傳統的格式:

    SELECT t1.a1 as c1, t2.b1 as c2FROM t1, t2

    WHERE t1.a2 = t2.b2

    2、分號字元

    •分號是SQL語句結束標記,在HiveQL中也是,但是在HiveQL中,對分號的識別沒有那麼智慧,例如:

    •select concat(key,concat(";",key)) from dual;

    •但HiveQL在解析語句時提示:

    FAILED: Parse Error: line 0:-1 mismatched input "<EOF>" expecting ) in function specification

    •解決的辦法是,使用分號的八進位制的ASCII碼進行轉義,那麼上述語句應寫成:

    •select concat(key,concat("\073",key)) from dual;

    3、IS [NOT] NULL

    •SQL中null代表空值, 值得警惕的是, 在HiveQL中String型別的欄位若是空(empty)字串, 即長度為0, 那麼對它進行IS NULL的判斷結果是False.

    4、Hive不支援將資料插入現有的表或分割槽中,

    僅支援覆蓋重寫整個表

  • 中秋節和大豐收的關聯?
  • java學習零基礎,幾個月能掌握?