Hive數倉之快速入門(二)

来源:http://www.cnblogs.com/shsxt/archive/2017/12/05/7986327.html
-Advertisement-
Play Games

上次已經講了《Hive數據倉庫之快速入門一》不記得的小伙伴可以點擊回顧一下,接下來我們再講Hive數據倉庫之快速入門二 DQL hive中的order by、distribute by、sort by和cluster by order by 全局排序,只有一個Reduce任務 sort by 只做j ...


上次已經講了《Hive數據倉庫之快速入門一》不記得的小伙伴可以點擊回顧一下,接下來我們再講Hive數據倉庫之快速入門二


DQL

hive中的order by、distribute bysort bycluster by
 
order by 
全局排序,只有一個Reduce任務
 
sort by 
只做jubu排序
 
distribute by 
用distribute by 會對指定的欄位按照hashCode值對reduce的個數取模,然後將任務分配到對應的reduce中去執行
 
cluster by 
distribute by 和 sort by 合用就相當於cluster by,但是cluster by 不能指定排序為asc或 desc 的規則,只能是desc倒序排列
 
註:distribute by 和 sort by,distribute by 必須在 sort by前面
表連接
1.join只支持等值連接
 
2.可以 join 多於 2 個表
SELECT a.val, b.val, c.val FROM a JOIN b
    ON (a.key = b.key1) JOIN c ON (c.key = b.key2)
註:如果join中多個表的 join key 是同一個,則 join 會被轉化為單個 map/reduce 任務
 
3.LEFTRIGHTFULL OUTER
SELECT a.val, b.val FROM a LEFT OUTER JOIN b ON (a.key=b.key)
 
如果 d 表中找不到對應 c 表的記錄,d 表的所有列都會列出 NULL,包括 ds 列。也就是說,join 會過濾 d 表中不能找到匹配 c 表 join key 的所有記錄。這樣的話,LEFT OUTER 就使得查詢結果與 WHERE 子句無關
 
•解決辦法
  SELECT c.val, d.val FROM c LEFT OUTER JOIN d 
     ON (c.key=d.key AND d.ds='2009-07-07' AND c.ds='2009-07-07')
     
4.LEFT SEMI JOIN
LEFT SEMI JOIN 的限制是, JOIN 子句中右邊的表只能在 ON 子句中設置過濾條件,在 WHERE 子句、SELECT 子句或其他地方過濾都不行
 
SELECT a.key, a.value 
  FROM a
  WHERE a.key in 
   (SELECT b.key 
    FROM B);
 
可以被重寫為:
 
SELECT a.key, a.val
   FROM a LEFT SEMI JOIN b on (a.key = b.key)
   
5.UNION ALL
用來合併多個select的查詢結果,需要保證select中欄位須一致
  select_statement UNION ALL select_statement UNION ALL select_statement ...
分析視窗函數
over (partition by * order by d desc)
其他
1.不支持EXIST ,NOT EXIST
 
2.Top N 關鍵字 為Limit
 
3.支持正則篩選欄位,如SELECT `(ds|hr)?+.+` FROM test

DCL

許可權
Grant/revoke語法:
grant/revoke priv_type[column_list] on object_type object to/from principal_type principal_name
 
查看grant 定義:
show grant user user_name on table table_name;
 
 
創建/刪除角色:
Create/drop Role role_name
 
角色分配/回收:
Grant role role_name to user user_name
Revoke role role_name from user user_name
 
角色授權:
Grant/revoke priv_type[col_List] on object_type object from/to role role_name
 
查看role定義:
show role grant role role_name
 
相關hive元信息表:
Db_privs:記錄了User/Role在DB上的許可權
Tbl_privs:記錄了User/Roletable上的許可權
Tbl_col_privs:記錄了User/Roletable column上的許可權
Roles:記錄了全部創建的role
Role_map:記錄了UserRole的相應關係

Hive函數

UDF、UDAF和UDTF
UDF實現輸入一行輸出一行行的函數
UDAF實現輸入多行輸出一行的函數
UDTF實現輸入一行輸出多行的函數
自定義UDF、UDAF和UDTF

相關資料

hive2.0函數大全 http://www.cnblogs.com/MOBIN/p/5618747.html

Mysql數據導入Hive

通過sqoop把mysql數據導入到hive(若hive沒對應表則自動建表)
./bin/sqoop import --connect jdbc:mysql://172.17.4.1:3306/poi --username lizt  --table poi_amap --hive-import --password 123456

python 客戶端

pyhs2
pip install pyhs2


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.1 什麼是Mybatis MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 。iBATIS一詞來源於“internet”和“abatis”的組合,是一個 ...
  • 上一篇簡單的介紹了怎麼搭建Zabbix監控服務端,接下來給大家介紹怎麼在windows和Centos7上安裝zabbix_agent客戶端。 Zabbix是一個基於WEB界面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。 Zabbix由2部分構成,zabbix server(監控端)與 ...
  • 結論:win記事本使用的格式有別於linux,二者不可混用。linux使用一個叫vi的編輯器。 解決辦法:使用vi命令建立文件,在其中敲shell。命令:vi > filename (敲完用ctrl +c 就可以保存) 。 驗證命令:sh filename 具體分析(你可以忽略): win是micr ...
  • 一、添加監控主機及設置 1.創建主機 Agent可以乾一些SNMP無法乾的事情,例如自定義監控項 snmp相關文章:http://www.abcdocker.com/abcdocker/1376 這裡我們先不著急點add,還需要設置其他選項 點擊監控模板 zabbix監控是由監控項組成(cpu使用率 ...
  • 命令行下中英文翻譯工具(Chinese and English translation tools in the command line) ...
  • 重新安裝了一遍Win10,但是不知怎的無法安裝.net framework 3.5,即便是下載離線安裝包也沒法用。 網上有人說需要使用win10的ISO文件,個人感覺太麻煩,在這裡分享一個很方便的操作。 首先,你需要下載cab版的.net3.5文件: "點擊下載" 下載好知乎將文件直接複製到C盤的W ...
  • 如果說在Java世界中,萬物皆對象,那麼在Linux世界中,可以說萬物皆文件。Linux文件一般分為兩種,一般文件和目錄文件。文件許可權對於數據安全至關重要,有必要清楚的知道一般文件許可權和目錄文件許可權的意義。 許可權對文件的重要性 文件是實際含有數據的地方,包括一般文本文件、資料庫內容檔、二進位可可執行 ...
  • 日期時間修改1. 查看時間和日期 或 顯示日曆 2.設置時間和日期例如:將系統日期設定成2017年11月3日的命令 將系統時間設定成下午11:45:50的命令 3. 設置完系統時間後,還需要同步到硬體時鐘上,將當前時間和日期寫入BIOS,避免重啟後失效, [root@qdy ~]# hwclock ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...