1. 程式人生 > >從無到有系列之Hive-hive全實戰hive05

從無到有系列之Hive-hive全實戰hive05

查詢全體學生的學號與姓名
  hive> select Sno,Sname from student;


查詢選修了課程的學生姓名
  hive> select distinct Sname from student inner join sc on student.Sno=Sc.Sno;


----hive的group by 和集合函式


查詢學生的總人數
  hive> select count(distinct Sno)count from student;


計算1號課程的學生平均成績
  hive> select avg(distinct Grade) from sc where Cno=1;
查詢各科成績平均分
hive> select Cno,avg(Grade) from sc group by Cno;  
查詢選修1號課程的學生最高分數
  select Grade from sc where Cno=1 sort by Grade desc limit 1;      
     
  
求各個課程號及相應的選課人數 
  hive> select Cno,count(1) from sc group by Cno;




查詢選修了3門以上的課程的學生學號
  hive> select Sno from (select Sno,count(Cno) CountCno from sc group by Sno)a where a.CountCno>3;
或 hive> select Sno from sc group by Sno having count(Cno)>3; 


----hive的Order By/Sort By/Distribute By
  Order By ,在strict 模式下(hive.mapred.mode=strict),order by 語句必須跟著limit語句,但是在非strict下就不是必須的,這樣做的理由是必須有一個reduce對最終的結果進行排序,如果最後輸出的行數過多,一個reduce需要花費很長的時間。


查詢學生資訊,結果按學號全域性有序
  hive> set hive.mapred.mode=strict;
hive> select Sno from student order by Sno;
FAILED: Error in semantic analysis: 1:33 In strict mode, if ORDER BY is specified, LIMIT must also be specified. Error encountered near token 'Sno'
  Sort By,它通常發生在每一個redcue裡,“order by” 和“sort by"的區別在於,前者能給保證輸出都是有順序的,而後者如果有多個reduce的時候只是保證了輸出的部分有序。set mapred.reduce.tasks=<number>在sort by可以指定,在用sort by的時候,如果沒有指定列,它會隨機的分配到不同的reduce裡去。distribute by 按照指定的欄位對資料進行劃分到不同的輸出reduce中 
  此方法會根據性別劃分到不同的reduce中 ,然後按年齡排序並輸出到不同的檔案中。


查詢學生資訊,結果區分性別按年齡有序
  hive> set mapred.reduce.tasks=2;
  hive> insert overwrite local directory '/home/hadoop/out' 
select * from student distribute by Sex sort by Sage;


----Join查詢,join只支援等值連線 
查詢每個學生及其選修課程的情況
  hive> select student.*,sc.* from student join sc on (student.Sno =sc.Sno);
查詢學生的得分情況。
  hive>select student.Sname,course.Cname,sc.Grade from student join sc on student.Sno=sc.Sno join course on sc.cno=course.cno;


查詢選修2號課程且成績在90分以上的所有學生。
  hive> select student.Sname,sc.Grade from student join sc on student.Sno=sc.Sno 
where  sc.Cno=2 and sc.Grade>90;
  
----LEFT,RIGHT 和 FULL OUTER JOIN
查詢所有學生的資訊,如果在成績表中有成績,則輸出成績表中的課程號
  hive> select student.Sname,sc.Cno from student left outer join sc on student.Sno=sc.Sno;
  如果student的sno值對應的sc在中沒有值,則會輸出student.Sname null.如果用right out join會保留右邊的值,左邊的為null。
  Join 發生在WHERE 子句之前。如果你想限制 join 的輸出,應該在 WHERE 子句中寫過濾條件——或是在join 子句中寫。
  
----LEFT SEMI JOIN  Hive 當前沒有實現 IN/EXISTS 子查詢,可以用 LEFT SEMI JOIN 重寫子查詢語句


重寫以下子查詢為LEFT SEMI JOIN
  SELECT a.key, a.value
  FROM a
  WHERE a.key exist in
   (SELECT b.key
    FROM B);
可以被重寫為:
   SELECT a.key, a.val
   FROM a LEFT SEMI JOIN b on (a.key = b.key)


查詢與“劉晨”在同一個系學習的學生
  hive> select s1.Sname from student s1 left semi join student s2 on s1.Sdept=s2.Sdept and s2.Sname='劉晨';

相關推薦

Hive入門到精通系列--0.Hive概述和安裝環境

  一 Hive概述 Hive是由Facebook開源用於解決海量結構化日誌的資料統計 Hive是基於Hadoop框架的一個數據倉庫分析工具,這裡對於資料倉庫,何為資料倉庫?mysql,orical,sqlserver我們叫這些為資料庫,所謂資料倉庫就是在這個資料倉庫中這些

從無到有系列Hive-hive實戰hive05

查詢全體學生的學號與姓名   hive> select Sno,Sname from student; 查詢選修了課程的學生姓名   hive> select distinct Sname from student inner join sc on student.Sno=Sc.Sno; ----

大數據學習系列五 ----- Hive整合HBase圖文詳解

scala direct ont 增加 pac hadoop2 exe dfs- min 引言 在上一篇 大數據學習系列之四 ----- Hadoop+Hive環境搭建圖文詳解(單機) 和之前的大數據學習系列之二 ----- HBase環境搭建(單機) 中成功搭建了Hive

PowerShell零開始系列

PowerShell好了,之前我們講過學習PowerShell的必要性,那麽今天開始實際操作下PowerShell。PowerShell預裝在Windows 7以上的系統中,無需額外下載,即可使用你可以在開始菜單中找到 Windows PowerShell或者通過 Win+R 運行 PowerShell以打開

零開始系列vue全家桶(3)安裝使用vuex

info 獲取 clas from 顯示 共享 安裝 default 重要 什麽是vuex? vuex:Vue提供的狀態管理工具,用於同一管理我們項目中各種數據的交互和重用,存儲我們需要用到數據對象。 即data中屬性同時有一個或幾個組件同時使用,就是data中共用的屬性。

零開始系列vue全家桶(4)帶新手小白一起搭建第一個個人網站項目

轉載 個人網站 rfi red nbsp oot ott osx 全部 未經允許,嚴禁轉載,全文由blackchaos提供。 在安裝好了前面大部分需要的插件,我們開始進行第一個個人項目。結合vue+vuex+vue-cli+vue-router+webpack使用。

PowerShell擴展——PowerShell零開始系列

PowerShell上一篇文章我們介紹了基本的PowerShell命令,細心的讀者可能已經發現了:為什麽PowerShell的命令這麽少啊???好像沒法管理應用啊???emmm~~其實不然,PowerShell具有強大的擴展性,很多微軟以及第三方廠商的產品都集成了PowerShell命令比如微軟自身的 Act

PowerShell學習小結——PowerShell零開始系列

PowerShell能堅持看到這裏的同學,相信對PowerShell的命令使用應該不陌生,由於後面的內容較為繁雜,所以必須要熟悉PowerShell命令這裏準備了一些基礎的題目,有興趣的一定要動手操作一下:如何查看wuauserv服務運行狀態如何停止wuauserv服務如何查看explorer進程有服務器條件

你真的瞭解ESD嗎?老司機零教學系列學會ESD選型

ESD(Electro-Static discharge)的意思是“靜電釋放”。ESD是20世紀中期以來形成的以研究靜電的產生、危害及靜電防護等的學科。因此,國際上習慣將用於靜電防護的器材統稱為ESD,中文名稱為靜電阻抗器。  通常,電路中通常採用TVS(Transient

一篇就夠了系列Android Manifest解析

前言: 前面幾篇介紹了android四大元件的知識,可以發現,四大元件都必須在一個叫AndroidManifest.xml檔案中進行註冊,那麼該檔案的作用是什麼呢?你們的內容各有什麼意義呢?帶著這些疑問,來開始下面內容的學習。官方文件,很詳細 作用:

leetcode總結止境系列連結串列

//dummy head的使用示例 ListNode* ProcessList(ListNode* head){ ListNode* dummy = new ListNode(); dummy->next = head; //process the list head

20170825L08-05老男孩linux實戰運維培訓-Lamp系列-Apache服務生產實戰應用指南02

apache這一節說Apache的安裝目錄文件具體介紹了一些重要文件的配置tree -L 1 /usr/local/apache[[email protected] extra]# tree -L 1 /usr/local/apache/usr/local/apache├── apache ->

20170830L08-06老男孩linux實戰運維培訓-Lamp系列-Apache服務生產實戰應用指南03

apache還是說的apache的設置這一次說的是虛擬主機主要配置文件httpd.confhttpd-vhhsots.confhttpd.conf主要控制目錄的訪問httpd-vhosts.conf控制域名的轉換,要別名,日誌的路徑對於實驗中的訪問主機中要設置 hosts文件<Directory "/v

ES6 系列異步處理實戰

比較 join yqi let 我們 對象 獲取 作者 rev 前言 我們以查找指定目錄下的最大文件為例,感受從 回調函數 -> Promise -> Generator -> Async 異步處理方式的改變。 API 介紹 為了實現這個功能,我們需要用到

hadoop系列HDFS 原理與實戰

HDFS檔案系統 HDFS簡介 HDFS 是 Hadoop Distributed File System 的簡稱,即 Hadoop 分散式檔案系統。它起源於谷歌發表的 GFS 論文, 是該論文的開源實現,也是整個大資料的基礎。 HDFS 專門為解決大資料的儲存問題而產生

Kubernetes系列監控Metres-server實戰

ast user info 信息 client 支持 lock 測試 metrics 本次系列使用的所需部署包版本都使用的目前最新的或最新穩定版,安裝包地址請到公眾號內回復【K8s實戰】獲取 介紹 從 Kubernetes 1.8 開始,Kubernetes 通過 M

江疏影讀書系列Java併發程式設計實戰(第一章 簡介)

欲速則不達,欲達則欲速! 12年畢業,化工、零售。16年轉行,Java培訓五個月,17年1月,我人生中最悲慘的一個月,找工作處處

《一頭扎進》系列Python+Selenium框架實戰篇4- 價值好幾K的框架,呵!這個框架有點意思啊!!!

1.簡介   前面文章,我們實現了框架的一部分功能,包括日誌類和瀏覽器引擎類的封裝,今天我們繼續封裝一個基類和介紹如何實現POM。關於基類,是這樣定義的:把一些常見的頁面操作的selenium封裝到base_page.py這個類檔案,以後每個POM中的頁面類,都繼承這個基類,這樣每個頁面類都有基類的方法,這個

《一頭扎進》系列Python+Selenium框架實戰篇8 - 年底升職加薪,年終獎就差最後這一步你知道不???

1.簡介   到上一篇為止,測試報告已經完美的生成,但是你此時不要沾沾自喜,因為還差點意思,你才能升職加薪、拿年終獎。差點啥了???聽巨集哥給你慢慢道來。那就是把你生成的高階大氣上檔次的測試報告給領導展示一番,吹噓一番。不把測試報告發出去好好地在領導面前表現一番,你留著生娃過年嗎?這馬上就新年了,你還真的留著

大資料系列hive(八、hive內建函式解)

1.內建運算子1.1關係運算符 運算子 型別 說明 A = B 所有原始型別 如果A