hive 手記
這個過程可以類比mysql等資料庫的過程:將sql語句翻譯成執行過程去資料庫里找數據,資料庫則實際上是文件系統里的有組織的文件。Hive將sql語句翻譯成N輪MapReduce執行過程,去hdfs上找數據計算。需要告訴Hive的是,每一份數據(表)在hdfs上的存儲路徑、數據每一行各列的列名(欄位),這些信息存在元庫里。萬事俱備,只欠下指令。
指令分2大類:管理指令(對錶/分區/欄位 的 增刪改),查詢指令(各種花樣的select)。可以去Home - Apache Hive - Apache Software Foundation系統學習。本文不羅列SQL的各個關鍵字,只提一種數據分析人員學習SQL的方法——從對數據的查詢角度切入。
數據的玩法就4點:行列過濾、數據變換、合併連接、聚合透視
1、行列過濾
select 列過濾; where 行過濾
2、數據變換
sql內置的各種函數、json抽取、url參數抽取、字典取kv、數組取元素、if/case、類型cast轉換等等都是數據變換
3、合併連接
union all 行合併; join / left outer join 列連接。(還有其他join不常用)
4、聚合透視
group by。 聚合函數sum count 配合distinct 。
--------over,有這16字指南,理解sql會輕鬆許多。然後,開練吧
(等等還沒完,窗口函數、LATERAL VIEW、 EXPLODE這些能懂會用最好。但如果有場景用到這些,那麼數據集市就還有優化的空間。但,這些「高級」玩法仍然跑不出上述4種玩法)
推薦閱讀:
※零基礎如何學習SQL——了解select查詢語句
※sql 查詢如何將結果集 輸出為一段字元串?
※有什麼好的書籍了解sql執行細節?比如執行計劃之類的。
※SQL 大法好,退果保平安
※如何優雅地寫SQL?