區別:1、Hive-sql不支援等值連線,而sql支援;2、Hive-sql不支援「Insert into 表 Values()」、UPDATA、DELETE操作,而sql支援;3、Hive-sql不支援事務,而sql支援。
總體來說hiveSQL與SQL基本上一致,最初的設計目的就是為了讓會SQL但是不會程式設計MapReduce的人也能使用Hadoop進行資料處理。
1、Hive不支援等值連線
不支援等值連線,一般使用left join、right join 或者inner join替代。
例如:
SQL中內關聯可以這樣寫: select * from a , b where a.key = b.key
Hive中應該這樣寫: select * from a join b on a.key = b.key
hive中不能使用省去join的寫法。
2、分號字元
分號是sql語句的結束符號,在hive中也是,但是hive對分號的識別沒有那麼智慧,有時需要進行跳脫 「;」 --> 「\073」
3、NULL
sql中null代表空值,但是在Hive中,String型別的欄位若是空(empty)字串,即長度為0,那麼對它 is null 判斷結果為False
4、Hive不支援將資料插入現有的表或分割區中
Hive僅支援覆蓋重寫整個表。
insert overwrite 表 (重寫覆蓋)
5、Hive不支援 Insert into 表 Values(), UPDATA , DELETE 操作
insert into 就是往表或者分割區中追加資料。
6、Hive支援嵌入mapreduce程式,來處理複雜的邏輯
暫時沒有例子可以提供。
7、Hive支援將轉換後的資料直接寫入不同的表,還能寫入分割區,hdfs和本地目錄
避免多次掃描輸入表的開銷。
8、HQL不支援行級別的增、改、刪,所有資料在載入時就已經確定,不可更改。
更多程式設計相關知識,請存取:!!
以上就是Hive-sql和sql的區別是什麼?的詳細內容,更多請關注TW511.COM其它相關文章!