Hive-sql與SQL的區別

總體一致:

Hive-sql與SQL基本上一樣,因為當初的設計目的,就是讓會SQL不會編程MapReduce的也能使用Hadoop進行處理數據。

因此,大膽使用SQL的,如果遇到不對的,再查。


區別:

Hive沒有delete和update。可能新版本有


------以下轉載---http://blog.csdn.net/u010385646/article/details/53167707--------


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. INSERT OVERWRITE TABLE t1??
  2. SELECT * FROM t2;
復制代碼


5、hive不支持INSERT INTO 表 Values(), UPDATE, DELETE操作
? ? 這樣的話,就不要很復雜的鎖機制來讀寫數據。
? ? INSERT INTO syntax is only available starting in version 0.8。INSERT INTO就是在表或分區中追加數據。

6、hive支持嵌入mapreduce程序,來處理復雜的邏輯
如:
  1. FROM (??
  2. MAP doctext USING 'python wc_mapper.py' AS (word, cnt)??
  3. FROM docs??
  4. CLUSTER BY word??
  5. ) a??
  6. REDUCE word, cnt USING 'python wc_reduce.py';??
復制代碼


--doctext: 是輸入
--word, cnt: 是map程序的輸出

--CLUSTER BY: 將wordhash后,又作為reduce程序的輸入



并且map程序、reduce程序可以單獨使用,如:
  1. FROM (??
  2. FROM session_table??
  3. SELECT sessionid, tstamp, data??
  4. DISTRIBUTE BY sessionid SORT BY tstamp??
  5. ) a??
  6. REDUCE sessionid, tstamp, data USING 'session_reducer.sh';??
復制代碼


-DISTRIBUTE BY: 用于給reduce程序分配行數據

7、hive支持將轉換后的數據直接寫入不同的表,還能寫入分區、hdfs和本地目錄
這樣能免除多次掃描輸入表的開銷。
  1. FROM t1??
  2. ??
  3. INSERT OVERWRITE TABLE t2??
  4. SELECT t3.c2, count(1)??
  5. FROM t3??
  6. WHERE t3.c1 <= 20??
  7. GROUP BY t3.c2??
  8. ??
  9. INSERT OVERWRITE DIRECTORY '/output_dir'??
  10. SELECT t3.c2, avg(t3.c1)??
  11. FROM t3??
  12. WHERE t3.c1 > 20 AND t3.c1 <= 30??
  13. GROUP BY t3.c2??
  14. ??
  15. INSERT OVERWRITE LOCAL DIRECTORY '/home/dir'??
  16. SELECT t3.c2, sum(t3.c1)??
  17. FROM t3??
  18. WHERE t3.c1 > 30??
  19. GROUP BY t3.c2;??
復制代碼



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538238.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python閏年多一天_記一個 python datetime 閏年問題

python中datetime是比較常用的&#xff0c;平時用起來也沒什么問題&#xff0c;但是今天2020年2月29日服務器卻開始報錯了&#xff0c;這里有個平時難以注意的坑服務器上跑的是新浪網的爬蟲&#xff0c;抓取的頁面信息中帶有日期 XX月XX日&#xff0c;需要strfptime轉化一下&am…

linux find 按類型查找,Linux find查找find命令詳解

玩蛇網推薦圖文教程&#xff1a;python 列表Linux命令有很多&#xff0c;今天要介紹的是常用的基礎命令中的find命令。find是Linux系統管理員所喜愛用的必備工具命令之一&#xff0c;它的作用是可以很輕松地找到你想要的文件&#xff0c;一個命令就可以在眾多文件中找到你的目標…

window安裝gcc編譯器

在使用 GraphLab Create 時&#xff0c;導入包失敗&#xff0c;提示libs沒有的導入&#xff0c;而這些libs的編譯是需要gcc。 1、訪問&#xff1a;http://www.mingw.org/ 下載。 2、雙擊安裝 3、安裝好后會彈出下面的組件安裝界面 3、找到mingw32-gcc-g&#xff08;注意cl…

視頻AI,助力體育賽事轉播走進智能時代

摘要&#xff1a;2018俄羅斯世界杯經過近20天的激戰&#xff0c;已經進入到最關鍵的階段。本次賽事除了精彩紛呈的比賽之外&#xff0c;還加入很多高科技的元素&#xff0c;例如門線、VAR技術等等。讓本屆世界杯成為科技含量最高的一屆世界杯。2018俄羅斯世界杯經過近20天的激戰…

python求同構數_用c語言求1到1000的同構數_后端開發

python與平臺有關嗎_后端開發Python與平臺無關&#xff0c;因為Python是跨平臺的語言&#xff0c;Python作為腳本語言&#xff0c;是解釋執行的&#xff0c;所以能跨平臺&#xff0c;前提是必須要有一個對應的解釋器。具體請看實例&#xff1a;python中count函數的用法詳解_后端…

element表格實現樹形全選_很實用!word中全選的快捷鍵介紹及使用方法

全選快捷鍵可以提高我們在操作word時工作效率&#xff0c;在操作Word2003中怎么對文檔中的文字進行全選呢?下面為大家提供幾種全選的方法&#xff0c;絕對好用。Word怎樣全選?方法一、使用Word全選快捷鍵“CtrlA”進行全選(也適用于電子表格);方法二、展開菜單欄中的“編輯”…

am3352 linux 內核 編譯,am335x uboot, kernel 編譯

一、設置環境變量// 寫在家目錄下面的 .bashrc 里面export KERNEL_PATH~/aplex/kernel3.2.0 // kernel 路徑export UBOOT_PATH~/aplex/uboot2011.09 // u-boot 路勁export ROOTFS_PATH~/aplex/filesystemexport TOOLFS_PATH~/aplex/toolsexport ARCHarm // 設置平臺類型export …

Docker的應用場景

原文鏈接&#xff1a;http://blog.csdn.net/dev_csdn/article/details/78424803 ------------------------------------------------------------------- Docker是開發人員和系統管理員構建&#xff0c;發布和運行分布式應用程序的開放平臺&#xff0c;可以在筆記本電腦、數據…

cad多段線畫圓弧方向_【學員分享】CAD多段線用法

原標題&#xff1a;【學員分享】CAD多段線用法1、執行方法&#xff1a;(1)菜單欄&#xff1a;繪圖→多段線(2)繪圖功能區&#xff1a;繪圖→多段線按鈕(3)快捷鍵&#xff1a;PL2、使用方法(1)多段線與直線的區別&#xff1a;直線每一段都是分開的&#xff0c;圖畫完后不是一個整…

linux 視頻編輯 ffmpeg,ffmpeg轉碼視頻真的好用!(ffmpeg的簡單使用方法)

說明轉碼和編輯視頻今天用Android Studio(后面簡稱AS)里的模擬器給系統錄屏&#xff0c;用來展示OpenGL可視化的東西&#xff0c;打算上傳B站&#xff0c;后來發現AS只能保存webm格式和GIF格式的視頻&#xff0c;并且文件體積巨大&#xff0c;視頻圖像也是順時針旋轉的。沒辦法…

requests庫入門09-OAUTH認證

實際登陸中&#xff0c;認證用到的token會變的&#xff0c;不過可以在GIthub設置一個私人token。 如圖&#xff0c;登錄GIthub&#xff0c;然后用戶下面選擇Settings/Developer settings/Personal access tokens,點擊Generate new token&#xff0c;然后隨便輸個描述&#xff0…

mysql期末考試試卷_mysql試題

net start mysqlfound_rows函數 返回select的總行數哪種操作能夠實現實體完整性 設置外鍵數據模型三要素&#xff1a;數據結構、數據操作、完整性約束&#xff0c;哪項不屬于數據模型 網狀模型(層次、網狀、關系、面向對象模型)觸發器主要用于監視某個表的insert、update以及de…

深入了解HashMap

什么是hash&#xff1f;哈希算法將任意長度的二進制值映射為較短的固定長度的二進制值&#xff0c;這個小的二進制值稱為哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母&#xff0c;隨后的哈希都將產生不同的值。要找…

snort入侵檢測系統下載Linux,入侵檢測系統Snort 2.9.0.2 發布

Snort 是一個免費的、跨平臺的軟件包&#xff0c;用作監視小型 TCP/IP 網的嗅探器、日志記錄、侵入探測器。Snort 是全世界上使用最廣泛的入侵預防與偵測軟件。Snort 有三種工作模式&#xff1a;嗅探器、數據包記錄器、網絡入侵檢測系統。嗅探器模式僅僅是從網絡上讀取數據包并…

IRC BOT原來是利用IRC下發CC命令——在xx云環境遇到了,惡意軟件開的是6666端口...

Backdoor/IRC.RpcBot 本詞條缺少名片圖&#xff0c;補充相關內容使詞條更完整&#xff0c;還能快速升級&#xff0c;趕緊來編輯吧&#xff01;Backdoor/IRC.RpcBot是一些批處理文件、腳本文件和執行文件的集合&#xff0c;也是一種黑客工具&#xff0c;這些文件的名稱是可以變化…

科大奧銳實驗報告霍爾效應_大學物理實驗報告系列之霍爾效應

【實驗名稱】霍爾效應【實驗目的】1&#xff0e;了解霍爾效應實驗原理以及有關霍爾器件對材料要求的知識。2&#xff0e;學習用“對稱測量法”消除付效應的影響&#xff0c;測量試樣的VH—IS&#xff1b;和VH—IM曲線。3&#xff0e;確定試樣的導電類型、載流子濃度以及遷移率。…

Android studio http 代理設置

Android studio http 代理設置 大連東軟信息學院鏡像服務器地址: - http://mirrors.neusoft.edu.cn 端口&#xff1a;80

三位數倒序數C語言,C語言求助!一個三位數的逆序數,總是編不對

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include #include #include int main(){int n,a,b,c,sum,ge,shi,bai;printf("請輸入一個三位整數&#xff1a;\n");scanf("%d",&n);nfabs(n);an/100;b(n-a*100)/10;cn%10;if(a>b&&b>c){gec…

DB2 存儲過程中執行動態SQL的兩種寫法

樣本代碼&#xff1a; DROP PROCEDURE QUOTATION.COPY_SAMPLE; CREATE PROCEDURE QUOTATION.COPY_SAMPLE (IN tableNameFrom VARCHAR(30), IN tableNameTo VARCHAR(30), INOUT copyResult INTEGER)BEGINDECLARE SQLCODE INTEGER DEFAULT 0;SET copyResult 0;-- Proecss 1BEGIN…

tp5 批量更新多條記錄_Thinkphp批量更新數據的方法匯總

以下小編給大家列出了三種實現thinkphp批量更新數據的方法,寫的不好還請見諒,有意見歡迎提出,共同學習進步! 方法一: //批量修改 data二維數組 field關鍵字段 參考ci 批量修改函數 傳參方式 function batch_update($table_name=,$data=array(),$field=){if(!$table_name||…