Hive編程指南
O'Reilly Media,Inc.介紹
作者序
Edward Capriolo
Dean Wampler
Jason Rutherglen
本書中所使用的約定
使用的代碼示例
Safari®在線圖書
如何聯系到我們
1 基礎知識
1.1 Hadoop和MapReduce綜述
MapReduce
1.2 Hadoop生態系統中的Hive
1.2.1 Pig
1.2.2 HBase
1.2.3 Cascading、Crunch及其他
1.3 Java和Hive:詞頻統計算法
1.4 后續事情
2 基礎操作
2.1 安裝預先配置好的虛擬機
2.2 安裝詳細步驟
2.2.1 裝Java
1.Linux系統中Java安裝步驟
2.Mac OS X系統中Java安裝步驟
2.2.2 安裝Hadoop
2.2.3 本地模式、偽分布式模式和分布式模式
2.2.4 測試Hadoop
2.2.5 安裝Hive
2.3 Hive內部是什么
2.4 啟動Hive
2.5 配置Hadoop環境
2.5.1 本地模式配置
例2-1 本地模式下的hive-site,xml配置文件。
2.5.2 分布式模式和偽分布式模式配置
2.5.3 使用JDBC連接元數據
例2-2 hive-site.xml中的元數據存儲數據庫配置。
2.6 Hive命令
命令選項
2.7 命令行界面
2.7.1 CLI 選項
2.7.2 變量和屬性
2.7.3 Hive中“一次使用”命令
2.7.4 從文件中執行Hive查詢
2.7.5 hiverc文件
2.7.6 使用Hive CLI的更多介紹
自動補全功能
2.7.7 查看操作命令歷史
2.7.8 執行shell命令
2.7.9 在Hive內使用Hadoop的dfs命令
2.7.10 Hive腳本中如何進行注釋
2.7.11 顯示字段名稱
3 數據類型和文件格式
3.1 基本數據類型
3.2 集合數據類型
3.3 文本文件數據編碼
3.4 讀時模式
4 HiveQL:數據定義
4.1 Hive中的數據庫
4.2 修改數據庫
4.3 創建表
4.3.1 管理表
4.3.2 外部表
4.4 分區表、管理表
4.4.1 外部分區表
4.4.2 自定義表的存儲格式
4.5 刪除表
4.6 修改表
4.6.1 表重命名
4.6.2 增加、修改和刪除表分區
4.6.3 修改列信息
4.6.4 增加列
4.6.5 刪除或者替換列
4.6.6 修改表屬性
4.6.7 修改存儲屬性
4.6.8 眾多的修改表語句
5 HiveQL:數據操作
5.1 向管理表中裝載數據
5.2 通過查詢語句向表中插入數據
動態分區插入
5.3 單個查詢語句中創建表並加載數據
5.4 導出數據
6 HiveQL:查詢
6.1 SELECT… FROM語句
6.1.1 使用正則表達式來指定列
6.1.2 使用列值進行計算
6.1.3 算術運算符
6.1.4 使用函數
1.數學函數
2.聚合函數
3.表生成函數
4.其他內置函數
6.1.5 LIMIT語句
6.1.6 列別名
6.1.7 嵌套SELECT語句
6.1.8 CASE … WHEN … THEN 句式
6.1.9 什么情況下Hive可以避免進行MapReduce
6.2 WHERE語句
6.2.1 謂詞操作符
6.2.2 關於浮點數比較
6.2.3 LIKE和RLIKE
6.3 GROUP BY 語句
HAVING語句
6.4 JOIN語句
6.4.1 INNER JOIN
例6-1 Hive中不支持的查詢語句
6.4.2 JOIN優化
6.4.3 LEFT OUTER JOIN
6.4.4 OUTER JOIN
6.4.5 RIGHT OUTER JOIN
6.4.6 FULL OUTER JOIN
6.4.7 LEFT SEMI-JOIN
例6-2 Hive中不支持的查詢
6.4.8 笛卡爾積JOIN
6.4.9 map-side JOIN
6.5 ORDER BY和SORT BY
6.6 含有SORT BY 的DISTRIBUTE BY
6.7 CLUSTER BY
6.8 類型轉換
類型轉換BINARY值
6.9 抽樣查詢
6.9.1 數據塊抽樣
6.9.2 分桶表的輸入裁剪
6.10 UNION ALL
7 HiveQL:視圖
7.1 使用視圖來降低查詢復雜度
7.2 使用視圖來限制基於條件過濾的數據
7.3 動態分區中的視圖和map類型
7.4 視圖零零碎碎相關的事情
8 HiveQL:索引
8.1 創建索引
Bitmap索引
8.2 重建索引
8.3 顯示索引
8.4 刪除索引
8.5 實現一個定制化的索引處理器
9 模式設計
9.1 按天划分的表
9.2 關於分區
9.3 唯一鍵和標准化
9.4 同一份數據多種處理
9.5 對於每個表的分區
9.6 分桶表數據存儲
9.7 為表增加列
9.8 使用列存儲表
9.8.1 重復數據
9.8.2 多列
9.9 (幾乎)總是使用壓縮
10 調優
10.1 使用EXPLAIN
10.2 EXPLAIN EXTENDED
10.3 限制調整
10.4 JOIN優化
10.5 本地模式
10.6 並行執行
10.7 嚴格模式
10.8 調整mapper和reducer個數
10.9 JVM重用
10.10 索引
10.11 動態分區調整
10.12 推測執行
10.13 單個MapReduce中多個GROUP BY
10.14 虛擬列
11 其他文件格式和壓縮方法
11.1 確定安裝編解碼器
11.2 選擇一種壓縮編/解碼器
11.3 開啟中間壓縮
11.4 最終輸出結果壓縮
11.5 sequence file存儲格式
11.6 使用壓縮實踐
11.7 存檔分區
11.8 壓縮:包扎
12 開發
12.1 修改Log4J屬性
12.2 連接Java調試器到Hive
12.3 從源碼編譯Hive
12.3.1 執行Hive測試用例
12.3.2 執行hook
12.4 配置Hive和Eclipse
12.5 Maven工程中使用Hive
12.6 Hive中使用hive_test進行單元測試
12.7 新增的插件開發工具箱(PDK)
13 函數
13.1 發現和描述函數
13.2 調用函數
13.3 標准函數
13.4 聚合函數
13.5 表生成函數
例13-1 explode函數的錯誤使用方式:
13.6 一個通過日期計算其星座的UDF
13.7 UDF與GenericUDF
13.8 不變函數
13.9 用戶自定義聚合函數
創建一個COLLECT UDAF來模擬GROUP_CONCAT
13.10 用戶自定義表生成函數
13.10.1 可以產生多行數據的UDTF
13.10.2 可以產生具有多個字段的單行數據的UDTF
13.10.3 可以模擬復雜數據類型的UDTF
13.11 在 UDF中訪問分布式緩存
13.12 以函數的方式使用注解
13.12.1 定數性(deterministic)標注
13.12.2 狀態性(stateful)標注
13.12.3 唯一性
13.13 宏命令
14 Streaming
14.1 恆等變換
14.2 改變類型
14.3 投影變換
14.4 操作轉換
14.5 使用分布式內存
14.6 由一行產生多行
14.7 使用streaming進行聚合計算
14.8 CLUSTER BY、DISTRIBUTE BY、SORT BY
14.9 GenericMR Tools for Streaming to Java
14.10 計算cogroup
15 自定義Hive文件和記錄格式
15.1 文件和記錄格式
15.2 闡明CREATE TABLE句式
15.3 文件格式
15.3.1 SequenceFile
15.3.2 RCfile
15.3.3 示例自定義輸入格式:DualInputFormat
15.4 記錄格式:SerDe
15.5 CSV和TSV SerDe
15.6 ObjectInspector
15.7 Thing Big Hive Reflection ObjectInspector
15.8 XML UDF
15.9 XPath相關的函數
15.10 JSON SerDe
15.11 Avro Hive SerDe
15.11.1 使用表屬性信息定義Avro Schema
15.11.2 從指定URL中定義Schema
15.11.3 進化的模式
15.12 二進制輸出
16 Hive的Thrift服務
16.1 啟動Thrift Server
16.2 配置Groovy使用HiveServer
16.3 連接到HiveServer
16.4 獲取集群狀態信息
16.5 結果集模式
16.6 獲取結果
16.7 獲取執行計划
16.8 元數據存儲方法
表檢查器例子
查找非外部表的表
16.9 管理HiveServer
16.9.1 生產環境使用HiveServer
16.9.2 清理
16.10 Hive ThriftMetastore
16.10.1 ThriftMetastore 配置
16.10.2 客戶端配置
17 存儲處理程序和NoSQL
17.1 Storage Handler Background
17.2 HiveStorageHandler
17.3 HBase
17.4 Cassandra
17.4.1 靜態列映射(Static Column Mapping)
17.4.2 為動態列轉置列映射
17.4.3 Cassandra SerDe Properties
17.5 DynamoDB
18 安全
18.1 和Hadoop安全功能相結合
18.2 使用Hive進行驗證
18.3 Hive中的權限管理
18.3.1 用戶、組和角色
18.3.2 Grant 和 Revoke權限
18.4 分區級別的權限
18.5 自動授權
19 鎖
19.1 Hive結合Zookeeper支持鎖功能
19.2 顯式鎖和獨占鎖
20 Hive和Oozie整合
20.1 Oozie提供的多種動作(Action)
1.MapReduce
2.Shell
3.Java 動作
4.Pig
5.Hive
6.DistCp
Hive Thrift Service Action
20.2 一個只包含兩個查詢過程的工作流示例
20.3 Oozie 網頁控制台
20.4 工作流中的變量
20.5 獲取輸出
20.6 獲取輸出到變量
21 Hive和亞馬遜網絡服務系統(AWS)
21.1 為什么要彈性MapReduce
21.2 實例
21.3 開始前的注意事項
21.4 管理自有EMR Hive集群
1.EMR AWS管理控制台(基於Web的前端控制台)
2.EMR命令行交互界面
3.EMR API
21.5 EMR Hive上的Thrift Server服務
21.6 EMR上的實例組
1.管理者實例組
2.核心實例組
3.任務(task)實例組
21.7 配置EMR集群
21.7.1 部署hive-site.xml文件
21.7.2 部署.hiverc腳本
1.使用配置步驟部署.hiverc腳本
2.使用輔助工具腳本部署.hiverc腳本
21.7.3 建立一個內存密集型配置
21.8 EMR上的持久層和元數據存儲
1.使用EMR集群外的穩固的元數據存儲
2.使用初始化腳本
3.在S3上進行MySQL dump操作
21.9 EMR集群上的HDFS和S3
21.10 在S3上部署資源、配置和輔助程序腳本
21.11 S3上的日志
21.12 現買現賣
21.13 安全組
21.14 EMR和EC2以及Apache Hive的比較
21.15 包裝
22 HCatalog
22.1 介紹
22.2 MapReduce
22.2.1 讀數據
22.2.2 寫數據
22.3 命令行
22.4 安全模型
22.5 架構
23 案例研究
23.1 m6d.com(Media6Degrees)
23.1.1 M 6D的數據科學,使用Hive和R
23.1.2 M6D UDF偽隨機
23.1.3 M6D如何管理多MapReduce集群間的Hive數據訪問
1.使用Hive執行跨集群查詢
2.不同集群間的Hive數據冗余
23.2 Outbrain
23.2.1 站內線上身份識別
1.對URL進行清洗
2.Determining referrer type
3.Multiple URL
23.2.2 計算復雜度
1.為什么這是個問題
2.加載一個臨時表
3.查詢臨時表
23.2.3 會話化
1.設置
2.找到來源頁面瀏覽量
3.將PV分桶到起始頁面中
4.對起始頁面進行聚合
5.按照起始頁面類型進行聚合
6.衡量熱度
23.3 NASA噴氣推進實驗室
23.3.1 區域氣候模型評價系統
23.3.2 我們的經驗:為什么使用Hive
23.3.3 解決這些問題我們所面臨的挑戰
23.4 Photobucket
23.4.1 Photobucket 公司的大數據應用情況
23.4.2 Hive所使用的硬件資源信息
23.4.3 Hive提供了什么
23.4.4 Hive支持的用戶有哪些
23.5 SimpleReach
23.6 Experiences and Needs from the Customer Trenches
標題:來自Karmasphere的視角
23.6.1 介紹
23.6.2 Customer Trenches的用例
1.Customer trenches 1: 為Hive優化存儲格式
2.Customer trenches 2: 分區和性能
3.Customer trenches 3: 使用 Regex、Lateral View Explode、Ngram和其他一些 UDF 進行文本分析
術語詞匯表
書末說明
歡迎來到異步社區!
異步社區的來歷
社區里都有什么?
購買圖書
下載資源
與作譯者互動
靈活優惠的購書
特別優惠
紙電圖書組合購買
社區里還可以做什么?
寫作
會議活動早知道
加入異步
思維導圖
防止博客圖床圖片失效,防止圖片源站外鏈:
http://www.processon.com/chart_image/5e5b375ee4b0541c5e149799.png)
思維導圖在線編輯鏈接: