主要區別如下:
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不支援將資料插入現有的表或分割槽中,
僅支援覆蓋重寫整個表
主要區別如下:
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不支援將資料插入現有的表或分割槽中,
僅支援覆蓋重寫整個表