Presto 實戰 Presto: The Definitive Guide: SQL at Any Scale, on Any Storage, in Any Environment

[美] 馬特·富勒(Matt Fuller)[美] 曼弗雷德·莫澤(Manfred Moser)[美] 馬丁·特拉韋爾索(Martin Traverso)

  • Presto 實戰-preview-1
  • Presto 實戰-preview-2
Presto 實戰-preview-1

買這商品的人也買了...

商品描述

隨著各行各業對大數據實時查詢的需求持續增長,數據查詢及分析引擎正變得不可或缺。Presto是由Facebook開源的高性能分佈式SQL查詢引擎,其用戶包括Netflix、Airbnb、LinkedIn、Twitter、Uber等知名公司。本書由Presto的核心開發人員參與撰寫,教你系統地學習Presto的用法。書中內容涵蓋Presto的安裝、設計理念、查詢操作、最佳實踐、與主要雲平臺的結合等。本書分為三大部分:第一部分介紹Presto的基礎知識;第二部分更進一步,介紹Presto架構、集群部署、與數據源的連接等;第三部分講解安全配置以及Presto的實際用例。你可以通過本書學會針對不同的數據源快速執行交互式SQL數據分析,並利用Presto管理和使用海量數據。

作者簡介

馬特.富勒(Matt Fuller)
Starburst公司聯合創始人。


曼弗雷德.莫澤(Manfred Moser)
開源社區擁護者、技術作家、培訓師,Starburst公司軟件工程師。


馬丁.特拉韋爾索(Martin Traverso)
Presto項目創始成員,Presto軟件基金會聯合創始人,Starburst公司首席技術官。

【譯者簡介】
張晨
畢業於上海交通大學,熱愛大數據技術、數據庫、分佈式系統和函數式編程,現於Indeed東京擔任軟件工程師。


黃鵬程
畢業於北京郵電大學,專注於數據庫和大數據平台的開發與架構工作。曾就職於中國民生銀行,擔任大數據基礎架構團隊負責人。現任阿里雲高級產品專家,負責阿里雲數據庫相關產品的設計與規劃工作。


傅宇
畢業於南京大學,專注於數據庫技術,現任阿里雲技術專家,擔任PolarDB-X雲原生分佈式數據庫內核研發工作,熟悉分佈式事務、查詢優化器和執行器,對大數據領域充滿熱情。

目錄大綱

譯者序xv
序xvii
前言xix

第一部分Presto入門

第1章Presto介紹3
1.1大數據帶來的問題3
1.2 Presto來救場4
1.2.1為性能和規模而生5
1. 2.2 SQL-on-Anything 5
1.2.3存儲與計算分離6
1.3 Presto使用場景6
1.3.1單一的SQL分析訪問點7
1.3.2數據倉庫和數據源系統的訪問點7
1.3.3提供對任何內容的SQL訪問8
1.3.4聯邦查詢9
1.3.5虛擬數據倉庫的語義層9
1.3.6數據湖查詢引擎9
1.3. 7 SQL轉換和ETL10
1.3.8更快的響應帶來更好的數據見解10
1.3.9大數據、機器學習和人工智能10
1.3.10其他使用場景11
1.4 Presto資源11
1.4.1官方網站11
1.4.2文檔12
1.4.3社區交流12
1.4.4源代碼、許可證和版本12
1.4.5貢獻12
1.4.6本書資源13
1.4.7鳶尾花數據集13
1.4.8航班數據集14
1.5 Presto簡史14
1.6小結15

第2章安裝和配置Presto 16
2.1使用Docker容器嘗試Presto 16
2.2使用歸檔文件安裝17
2.2.1 JVM 17
2.2.2 Python 18
2.2.3安裝18
2.2.4配置19
2.3添加數據源20
2.4運行Presto 21
2.5小結21

第3章使用Presto 22
3.1 Presto CLI 22
3.1.1使用入門22
3.1.2分頁25
3.1.3命令歷史25
3.1.4額外診斷25
3.1.5執行查詢25
3.1.6輸出格式26
3.1.7忽略錯誤26
3.2 Presto JDBC驅動27
3.2.1下載和註冊驅動28
3.2.2創建到Presto的連接29
3.3 Presto與ODBC 31
3.4客戶端庫31
3.5 Presto Web UI 31
3 .6使用Presto執行SQL 32
3.6.1概念33
3.6.2入門案例33
3.7小結36

第二部分深入理解Presto

第4章Presto的架構39
4.1集群中的協調器和工作節點39
4.2協調器41
4.3節點發現服務41
4.4工作節點42
4.5基於連接器的架構42
4.6 catalog、schema和表43
4.7查詢執行模型44
4.8查詢優化47
4.8.1解析和分析48
4.8.2初始查詢計劃49
4.9優化規則50
4 .9.1謂詞下推51
4.9.2 Cross Join消除51
4.9.3 TopN 52
4.9.4局部聚合52
4.10實現規則53
4.10.1 Lateral Join去關聯化53
4 .10.2 Semi-join(IN)去關聯化54
4.11基於代價的優化器55
4.11.1代價的概念55
4.11.2 Join的代價57
4.11.3表統計信息57
4.11.4過濾統計信息58
4.11.5分區表的統計信息59
4.11.6 Join枚舉60
4.11.7廣播Join和分佈式Join 60
4.12使用表統計信息62
4.12.1 Presto的ANALYZE命令62
4.12.2在寫入存儲時收集數據63
4.12.3 Hive的ANALYZE命令63
4.12.4顯示表統計信息63
4.13小結64

第5章生產環境部署65
5.1配置細節65
5.2服務端配置65
5.3日誌66
5.4節點配置67
5.5 JVM配置68
5.6啟動器69
5.7集群安裝70
5.8使用RPM安裝72
5.8.1安裝目錄結構72
5.8.2配置73
5.8.3卸載Presto 73
5.9在雲上安裝73
5.10集群規模的考量74
5.11小結74

第6章連接器75
6.1配置76
6.2 RDBMS連接器示例:PostgreSQL 76
6.2.1查詢下推78
6.2.2並行性和並發性79
6.2.3其他RDBMS連接器80
6.2.4安全性81
6.3 Presto TPC-H和TPC-DS連接器81
6.4用於分佈式存儲數據源的Hive連接器82
6.4.1 Apache Hadoop和Hive 82
6.4.2 Hive連接器83
6.4.3 Hive式表格式85
6.4.4內部表與外部表85
6.4.5分區數據87
6. 4.6加載數據88
6.4.7文件格式和壓縮90
6.4.8 MinIO示例91
6.5非關係數據源91
6.6 Presto JMX連接器92
6.7黑洞連接器94
6.8內存連接器94
6.9其他連接器95
6.10小結95

第7章高級連接器實例96
7.1用Phoenix連接HBase 96
7.2鍵值存儲連接器示例:Accumulo 97
7.2.1使用Presto Accumulo連接器100
7.2.2 Accumulo中的謂詞下推102
7.3 Apache Cassandra連接器103
7.4流式系統連接器示例:Kafka 104
7.5文檔存儲連接器示例:Elasticsearch 106
7. 5.1概述106
7.5.2配置和使用方法106
7.5.3查詢處理107
7.5.4全文搜索107
7.5.5總結108
7.6 Presto中的聯邦查詢108
7.7 ETL和聯合查詢114
7.8小結114

第8章在Presto中使用SQL 115
8.1 Presto語句116
8.2 Presto系統表118
8.3 catalog 120
8 .4 schema 120
8.5 Information Schema 121
8.6表122
8.6.1表和列屬性124
8.6.2複製現有的表125
8.6.3從查詢結果中新建表126
8. 6.4修改表127
8.6.5刪除表127
8.6.6連接器對錶操作的限制127
8.7視圖128
8.8會話信息和配置128
8.9數據類型129
8.9. 1集合數據類型131
8.9.2時態數據類型132
8.9.3類型轉換135
8.10 SELECT語句基礎136
8.11 WHERE子句137
8.12 GROUP BY和HAVING子句138
8.13 ORDER BY子句和LIMIT子句140
8.14 JOIN語句140
8.15 UNION、INTERSECT和EXCEPT子句141
8.16分組操作143
8.17 WITH子句144
8.18子查詢145
8.18.1標量子查詢145
8.18.2 EXISTS子查詢146
8.18.3集合比較子查詢146
8.19從表中刪除數據147
8.20小結147

第9章高級SQL特性148
9.1函數和運算符介紹148
9.2標量函數和運算符149
9.3布爾運算符150
9.4邏輯運算符151
9.5用BETWEEN語句選擇範圍152
9.6用IS(NOT) NULL檢測值的存在152
9.7數學函數和運算符152
9.8三角函數153
9.9常數和隨機函數154
9.10字符串函數和運算符154
9.11字符串和映射155
9.12 Unicode 156
9.13正則表達式158
9.14解嵌套複雜數據類型160
9.15 JSON函數161
9.16日期和時間函數及運算符161
9.17直方圖164
9.18聚合函數165
9.18.1映射聚合函數165
9.18.2近似聚合函數167
9.19窗函數168
9.20 lambda表達式169
9.21地理空間函數170
9.22 Prepared Statement 171
9.23小結173

第三部分Presto的實際應用

第10章安全177
10.1認證178
10. 2授權181
10.2.1系統訪問控制181
10.2.2連接器訪問控制184
10.3加密186
10.3.1加密Presto客戶端與協調器之間的通信188
10.3.2創建Java keystore和Java truststore 190
10.3.3在Presto集群內加密通信192
10.4 CA與自簽名證書193
10.5證書認證194
10.6 Kerberos 197
10.6.1前提條件198
10.6. 2 Kerberos客戶端認證198
10.6.3集群內部Kerberos 198
10.7數據源訪問和安全配置199
10.8使用Hive連接器進行Kerberos驗證200
10.8.1 Hive Metastore Thrift服務認證201
10.8 .2 HDFS認證201
10.9集群分離202
10.10小結202

第11章將Presto與其他工具集成203
11.1使用Apache Superset進行查詢、可視化和更多操作203
11.2使用RubiX提高性能204
11.3使用Apache Airflow的工作流205
11. 4嵌入式Presto示例:Amazon Athena 205
11.5 Starburst企業版Presto 208
11.6其他集成案例208
11.7自定義集成209

第12章生產環境中的Presto 211
12.1使用Presto Web UI監控211
12 .1.1集群級的細節212
12.1.2查詢列表213
12.1.3查詢細節視圖215
12.2 Presto SQL查詢調優221
12.3內存管理223
12.4任務並發性226
12. 5工作節點調度227
12.5.1根據任務或節點調度切片227
12.5.2本地調度策略227
12.6網絡數據交換228
12.6.1並發性228
12.6.2緩衝區大小228
12.7 JVM調優228
12.8資源組230
12.8.1資源組的定義231
12.8.2調度策略232
12.8.3選擇器規則定義233
12.9小結233

第13章真實世界的案例234
13.1部署和運行時平台234
13.2集群規模235
13.3 Hadoop /Hive遷移的使用場景237
13.4其他數據源237
13.5用戶和流量237
13.6小結238

第14章總結239
關於作者240
關於封面240