- Presto實戰
- (美)馬特·富勒 曼弗雷德·莫澤 馬丁·特拉韋爾索
- 8022字
- 2021-04-10 00:09:04
第 1 章 Presto介紹
你也許聽說過 Presto1,然后找到了本書,抑或只想瀏覽第 1 章的內容,以便決定是否繼續研讀。本章將討論快速增長的海量數據帶來的諸多問題,以及隱藏在這些數據中的價值。Presto 是處理這些數據的關鍵工具,讓你可以使用已證明十分成功的結構化查詢語言(structured query language,SQL)及其相關工具來訪問數據。
1Presto 包含兩個分支:PrestoDB 和 PrestoSQL。2020 年 12 月,PrestoSQL 正式更名為 Trino。本書內容適用于所有 Presto 分支。——編者注
Presto 的設計和特性能讓你更深入地理解數據。你不但可以更快地獲得見解,而且還可以獲得之前因成本太高或耗時太長而無法獲得的信息。同時,你使用了更少的資源并因此節省了預算。利用節省下來的資源,你還能從數據中獲得更多見解!
雖然本書也會介紹很多外部資源,但我們希望你可以先從本書開始學習。
1.1 大數據帶來的問題
每個人都在采集越來越多的數據,這些數據涉及設備指標、用戶行為跟蹤、商業交易、地理位置、軟件及系統測試過程和工作流等。通過理解和使用這些數據所獲得的洞見能夠決定一項計劃乃至一家公司的成敗。
同時,數據存儲機制日益多樣:關系數據庫、NoSQL 數據庫、文檔數據庫、鍵值存儲和對象存儲系統等。對于當今的組織機構,它們當中很多是必備的,只使用其中一種系統不再可行了。應對如圖 1-1 所示的情形是一項令人生畏的艱巨任務。

圖 1-1:大數據可能會讓人難以招架
此外,這些系統不允許你使用標準工具來查詢和檢視數據。面向特定系統的查詢語言和分析工具比比皆是。與此同時,你的商業分析師已習慣使用業界標準——SQL,無數強大的工具依賴 SQL 來分析數據、創建儀表盤、制作富文本報告以及完成其他商業智能工作。
數據分散在各個孤島上,其中有些系統甚至不能提供滿足分析所需的查詢性能,其他一些系統則將數據存儲在單一龐大的系統上,因而不能像現代的云應用程序一樣橫向擴展。沒有這樣的能力,你就只能縮小潛在的使用場景和用戶數量,因此降低了數據的實用價值。
對全世界的組織來說,創建和維護大型專用數據倉庫的傳統方法成本高昂。通常,對很多用戶和使用模式來說,這種方法也顯得緩慢且笨拙。
顯而易見的是,一個系統如果可以釋放所有這些價值,就將帶來巨大的機會。
1.2 Presto來救場
Presto 能解決上述所有問題。通過支持不同系統上的聯邦查詢、并行查詢和橫向集群擴展等功能,它還為我們提供了更多可能性。Presto 項目的標志如圖 1-2 所示。

圖 1-2:Presto 的標志
Presto 是一個開源的分布式 SQL 查詢引擎,它是為了高效查詢不同系統和各種規模(從 GB 級到 PB 級)的數據源而從頭開始設計和編寫的一套系統。使用 Presto,人們不需要在快速但昂貴的商業解決方案和緩慢(且需要更多硬件)但“免費”的解決方案之間做出選擇。
1.2.1 為性能和規模而生
Presto 使用分布式執行來快速查詢海量數據。如果有 TB 級乃至 PB 級的數據需要查詢,你可能會使用 Apache Hive 等工具,這些工具基于 Hadoop 和 Hadoop 分布式文件系統(Hadoop Distributed File System,HDFS)工作。與這些工具相比,Presto 可以更高效地查詢數據。
分析師應該使用 Presto,因為他們期望 SQL 查詢可以在幾毫秒(實時數據分析)、幾秒或幾分鐘內返回結果。Presto 支持 SQL,SQL 通常用在數據倉儲、數據分析、海量數據聚合和報表生成等任務上,這些任務通常被歸類為聯機分析處理(online analytical processing,OLAP)。
盡管 Presto 能理解并高效地執行 SQL,但它并不是一個數據庫,因為它并不包含自己的數據存儲系統。它無意成為一個通用關系數據庫,并取代 Microsoft SQL Server、Oracle 數據庫、MySQL 或 PostgreSQL。此外,Presto 也不適用于聯機事務處理(online transaction processing,OLTP)。許多為數據倉儲和數據分析任務設計和優化的數據庫也是如此,如 Teradata、Netezza、Vertica 和 Amazon Redshift 等。
Presto 同時使用了眾所周知的技術和新穎的技術來執行分布式查詢,這些技術包括內存并行處理、跨集群節點管線執行、多線程執行模型(以充分利用所有 CPU 核心)、高效的扁平內存數據結構(以最小化 Java 的垃圾回收)和 Java 字節碼生成等。本書不會詳細介紹 Presto 內部的復雜實現。借助上述技術,Presto 用戶可以以比其他方案更少的成本更快地獲得查詢結果。
1.2.2 SQL-on-Anything
Presto 的設計初衷是用來查詢 HDFS 上的數據。稍后可以看到,它可以非常高效地完成這一任務,而且并未止步于此。它也可以從對象存儲系統、關系數據庫管理系統(RDBMS)、NoSQL 數據庫和其他系統中查詢數據,如圖 1-3 所示。

圖 1-3:Presto 對多種數據源的 SQL 支持
Presto 在原地查詢數據,無須事先將數據遷移集中到某個位置。因此,Presto 不僅可以查詢 HDFS 和其他分布式對象存儲系統中的數據,而且還可以查詢 RDBMS 和其他數據源。無論數據存放在何處,Presto 都可以查詢,因此它可以取代傳統、昂貴和笨重的抽取–變換–加載(ETL)過程,至少可以幫你減輕相關任務的負擔。顯然,Presto 并非另一個 SQL-on-Hadoop 解決方案。
對象存儲系統包括 Amazon Web Services(AWS)提供的 Simple Storage Service(S3)、Microsoft Azure Blob Storage、Google Cloud Storage 和 S3 兼容的存儲系統(如 MinIO 和 Ceph)。Presto 可以查詢傳統的 RDBMS,如 Microsoft SQL Server、PostgreSQL、MySQL、Oracle、Teradata 和 Amazon Redshift,還可以查詢 NoSQL 數據庫系統,如 Apache Cassandra、Apache Kafka、MongoDB 和 Elasticsearch。Presto 幾乎可以查詢任何東西,是一個真正的 SQL-on-Anything 系統。
對于用戶來說,這意味著他們在與特定系統內的數據進行交互時,無須再依賴特定的查詢語言和工具。他們可以簡單地利用 Presto 和已有的 SQL 技能,利用已經十分熟悉的基于 SQL 的數據分析、儀表盤和報表工具,查詢那些之前被鎖定在分離系統中的數據。有了 Presto,用戶甚至可以執行跨越多個系統的 SQL 查詢。
1.2.3 存儲與計算分離
Presto 沒有自己的存儲,它只是在數據所在之處進行查詢處理。使用 Presto 時,存儲和計算是分離的,它們可以各自獨立地擴展。Presto 代表計算層,底層的數據源代表存儲層。
這使得 Presto 可以基于對數據的分析需求來擴展和縮減計算資源。你無須移動數據或根據當前查詢的需求預設計算資源和存儲資源,也無須隨著查詢需求的變化來定期變更資源的分配。
Presto 可以通過動態擴展計算集群的規模來擴展查詢能力,并可以在數據源中數據所在的位置查詢數據。借助這一特性,你可以極大地優化硬件資源需求并降低成本。
1.3 Presto使用場景
Presto 靈活強大的特性使你可以自行決定如何使用它以獲得最佳收益。你可以從僅用它解決一個特定的小問題開始,實際上,大部分 Presto 用戶是這樣開始的。
一旦你或者你所在組織中的其他 Presto 用戶熟悉了這些好處和特性,你們將會發現新的應用場景。口口相傳,很快你就會發現 Presto 滿足了訪問各種數據源的各種需求。
在下面的幾節中,我們將討論幾個使用場景。記住,你可以將 Presto 應用到所有場景。此外,僅使用 Presto 解決某個特定問題也完全沒有問題,只要準備好愛上 Presto 并在之后頻繁使用它即可。
1.3.1 單一的SQL分析訪問點
RDBMS 和 SQL 已經出現了很長時間且被證明是非常有用的。沒有它們,任何組織都無法運作。實際上,很多公司會運行多個系統。Oracle Database 和 IBM DB2 這樣的大型商業數據庫可能支撐著你的企業軟件。開源系統,如 MariaDB 和 PostgreSQL,可能用于其他解決方案或者一些內部應用程序。
作為一個消費者和分析師,你可能會遇到數不清的問題。
- 有時你甚至不知道數據在哪兒,只有憑借公司某個部門的內部知識或組織內多年的工作經驗,你才能找到正確的數據。
- 為了查詢多個數據庫,你需要使用不同的連接和運行多種 SQL 方言的不同查詢。這些查詢看起來很相似,行為上卻不同,因此你會感到困惑,并需要了解其中的細節。
- 若不使用數據倉庫,就無法使用查詢合并來自不同系統的數據。
Presto 可以幫你避免這些問題。你可以從 Presto 這里訪問所有這些數據庫。
可以使用一個 SQL 標準來查詢所有的系統——Presto 支持的標準化 SQL、函數和運算符。
所有的儀表盤和分析工具以及其他商業智能系統,都可以指向一個系統——Presto,并訪問組織當中的所有數據。
1.3.2 數據倉庫和數據源系統的訪問點
當一個組織需要更好地理解和分析存放在無數 RDBMS 中的數據時,就可以創建和維護數據倉庫系統。從多個系統中抽取的數據通過一個復雜的 ETL 過程(通常使用長時間的批處理任務),最終進入一個嚴格受控的、巨大的數據倉庫。
盡管數據倉庫在很多情況下非常有用,但作為一個數據分析師,你會面臨很多新問題。
- 除了原來的那些數據庫,你的工具和查詢現在又多了一個數據接入點。
- 你今天就要用的數據還沒放入數據倉庫。加載數據的過程痛苦、昂貴又障礙重重。
Presto 允許你添加任何數據倉庫作為數據源,就像其他關系數據庫一樣。
如果想深入研究數據倉庫的查詢,可以在 Presto 里直接完成。你也可以在這里訪問數據倉庫及其源數據庫系統,甚至可以編寫將它們組合在一起的查詢。Presto 讓你可以使用單個系統查詢任何數據庫(包括數據倉庫、源數據庫和任何其他數據庫)。
1.3.3 提供對任何內容的SQL訪問
只使用 RDBMS 的日子早已一去不復返。數據現在存儲在許多針對特定使用場景進行優化的不同系統中。基于對象的存儲、鍵值存儲、文檔數據庫、圖數據庫、事件流系統和其他所謂的 NoSQL 系統提供了獨有的特性和優勢。
至少你的組織中使用了其中的一些系統,所保存的數據對理解和改進業務至關重要。
當然,所有這些系統還要求你使用不同的工具和技術來查詢和處理數據。
至少,這是一項學習曲線陡峭的復雜任務。更有可能的是,你最終只觸及了數據的表層,而并沒有真正獲得完整的理解。你缺乏查詢數據的好方法,更詳細地可視化和分析數據的工具很難找或根本不存在。
另外,Presto 允許你將所有這些系統作為數據源進行連接。它使用標準的 ANSI SQL 和使用 SQL 的所有工具對外暴露要查詢的數據,如圖 1-4 所示。

圖 1-4:用于所有數據源的多個使用場景的單一 SQL 訪問點
得益于 Presto,理解所有這些截然不同的系統中的數據變得更加簡單,甚至第一次成為可能。
1.3.4 聯邦查詢
將所有的數據孤島都暴露給 Presto 是向理解數據邁出的一大步。你可以使用 SQL 和標準工具來查詢所有這些內容,但你想要回答的問題往往需要你潛入這些數據孤島,將它們的一些側面抽取出來,然后在同一個地方將其組合起來。
可以通過 Presto 的聯邦查詢滿足上述需求。聯邦查詢是在一個語句中引用并使用不同數據庫和模式(schema)的 SQL 查詢,這些數據庫和 schema 來自于完全不同的系統。在同一條 SQL 查詢中,可以查詢 Presto 中可用的所有數據源。
你可以定義對象存儲中的用戶追蹤信息和 RDBMS 中客戶數據之間的關系。如果鍵值存儲包含更多相關信息,你也可以把它添加進查詢。
使用 Presto 的聯邦查詢,你可以獲得通過其他方式無法獲得的洞見。
1.3.5 虛擬數據倉庫的語義層
數據倉庫系統為用戶創造了巨大的價值,對組織來說卻是一個負擔。
- 運行和維護數據倉庫是一個巨大且昂貴的項目。
- 需要專門的團隊運行與管理數據倉庫和相關的 ETL 過程。
- 將數據導入數據倉庫需要用戶執行煩瑣的操作,并且通常很耗時。
此外,Presto 可用作虛擬數據倉庫。使用這一工具和標準 ANSI SQL,你就可以定義語義層。一旦所有的數據庫都設置成 Presto 的數據源,你就可以查詢它們。Presto 提供了查詢這些數據庫所需的計算能力。使用 SQL 和 Presto 支持的函數和運算符,你可以直接從數據源獲得想要的數據。在使用數據進行分析之前,無須復制、移動或轉換它們。
多虧了對所有連接數據源的標準 SQL 支持,你能以更簡單的方式創建所需的語義層,以支持來自工具和終端用戶的查詢。這一語義層覆蓋了所有底層的數據源,因此無須遷移任何數據。Presto 可以在數據源和存儲層查詢數據。
將 Presto 用作這種“動態數據倉庫”為組織提供了增強現有數據倉庫的可能,甚至可以完全避免構建和維護數據倉庫。
1.3.6 數據湖查詢引擎
數據湖(data lake)通常指的是一個巨大的 HDFS 或類似的分布式對象存儲系統,在數據被轉儲到這些存儲系統時,并沒有特別考慮接下來應如何訪問它們。Presto 可以使它們成為有用的數據倉庫。實際上,Facebook 開發 Presto 的目的就是對一個非常大的 Hadoop 數據倉庫進行更快和更強大的查詢,提供 Hive 和其他工具無法提供的能力。這也是 Presto Hive 連接器的起源,6.4 節將討論這個連接器。
現代數據湖通常使用 HDFS 之外的其他對象存儲系統,這些系統來自云供應商或其他開源項目。Presto 能使用 Hive 連接器連接它們,無論數據在哪里、如何存儲,你都可以在數據湖上使用基于 SQL 的數據分析。
1.3.7 SQL轉換和ETL
基于對 RDBMS 和其他類似數據存儲系統的支持,Presto 也可用于遷移數據。它所提供的豐富的 SQL 函數,可以讓你查詢數據、轉換數據,并將數據寫入同一個數據源或任何其他數據源。
在實踐中,這意味著你可以從對象存儲系統或鍵值存儲中復制數據到 RDBMS,并進一步分析。當然,你也可以轉換和聚合數據,以獲得新的理解。
反過來,從運轉中的 RDBMS 或 Kafka 這樣的事件流系統當中讀取數據,并將它們移動到數據湖中的操作也很常見,這可以減輕多個分析師對 RDBMS 進行查詢的負擔。ETL 過程(現在也常稱為數據準備過程)可作為這一操作的重要組成部分,以提升數據質量并創建更適合查詢和分析的數據模型。
在這一場景下,Presto 是整個數據管理解決方案的關鍵部分。
1.3.8 更快的響應帶來更好的數據見解
復雜的問題和海量數據集帶來了諸多限制。將數據復制并加載到你的數據倉庫并在其中分析它們最終會過于昂貴。計算可能消耗太多的計算資源而無法處理全部數據,或者要耗費數天才能得到答案。
Presto 一開始就避免了數據復制。Presto 的并行計算和重度優化通常能為你的數據分析帶來性能提升。
如果原來需要 3 天的查詢現在只需 15 分鐘就可以完成,那么執行這個查詢便是有價值的。從這些結果中獲得的知識讓你可以執行更多的查詢。
總之,Presto 更快的處理速度帶來了更好的數據分析和結果。
1.3.9 大數據、機器學習和人工智能
Presto 向圍繞 SQL 的標準工具暴露了越來越多的數據,并將查詢擴展到海量數據集上,這使其成了大數據處理的主要工具。如今,大數據處理通常還包括統計分析,由于機器學習和人工智能系統的發展,處理的復雜度也隨之上升。基于對 R 語言和其他工具的支持,Presto 也必將在這些使用場景中占據一席之地。
1.3.10 其他使用場景
在前面的章節里,我們提供了對 Presto 使用場景的概覽。新的場景和組合不斷涌現。
在第 13 章中,你可以學習到一些知名公司和組織使用 Presto 的細節。我們將這些信息留在本書的結尾,這樣你就可以先閱讀接下來的章節,以獲得理解眼前的數據所必備的知識。
1.4 Presto資源
在本書之外,還有很多可用資源可以幫你擴展有關 Presto 的知識。這一節列舉一些重要的起始點,其中大多數包含豐富的信息并指向更多的資源。
1.4.1 官方網站
Presto 軟件基金會負責管理 Presto 項目的開源社區并維護項目網站。可以在圖 1-5 中看到 Presto 官方網站的主頁。Presto 網站中包含文檔、聯系信息、發布最新消息和事件的社區博客,以及很多其他信息。

圖 1-5:Presto 官方網站的主頁
1.4.2 文檔
Presto 的詳細文檔作為代碼庫的一部分維護,可以從官方網站上獲取到。該文檔既包括概覽,又包括 SQL 支持、函數、運算符、連接器、配置等方面的詳細參考信息,還提供包含最新修改細節的發布記錄。你可以從 Presto 文檔開始。
1.4.3 社區交流
你可以加入面向新手、進階用戶和專家用戶,以及 Presto 代碼貢獻者和維護者的社區聊天室,Presto 社區非常樂于幫助參與者,成員們每天都在積極地互相協作。
你可以先加入 general 頻道,然后查看專注于 bug 分類、版本發布和開發等多種話題的無數其他頻道。
你總是可以在社區聊天室找到馬特、曼弗雷德和馬丁。我們非常樂意聽取你的反饋。
1.4.4 源代碼、許可證和版本
Presto 是在 Apache License v2 協議下的開源項目,其源代碼在 Git 倉庫中,可參見 GitHub 網站的 prestosql/presto 頁面。
位于 GitHub 網站 Presto 頁面的 prestosql 組織包含許多與項目相關的其他倉庫,比如官方網站、客戶端、其他組件的源代碼或用于貢獻者許可證管理的倉庫。
Presto 是一個活躍且經常發布新版本的開源項目。使用最新版本時,你可以獲得最新特性、bug 修復和性能提升。在編寫本書時 Presto 的最新版本是 330,所以本書內容也使用和參考了這一版本。如果你使用一個更新版本的 Presto,它的工作原理應該能和本書中描述的一樣。盡管你不太可能遇到問題,但對于任何修改,參考發布記錄和文檔的內容仍非常重要。
1.4.5 貢獻
如前所述,Presto 是一個社區驅動的開源項目,我們歡迎并鼓勵你為其貢獻自己的力量。這個項目的社區聊天室非常活躍,你可以隨時向代碼提交者和其他開發者尋求幫助。
下面是在貢獻代碼之前需要完成的一些任務。
- 查看文檔中的開發者導引章節。
- 從 README 文件中學習從源代碼構建項目的方法。
- 在官方網站的社區(Community)頁面找到研究論文的鏈接,并閱讀研究論文。
- 在同一個頁面上瀏覽行為守則(Code of Conduct)。
- 找到一個標記為 good first issue 的問題。
- 簽署貢獻者授權協議(contributor license agreement,CLA)。
Presto 項目持續接受各種復雜度的貢獻:從小的文檔提升、新的連接器或者其他插件,到深入 Presto 內部的改進等。
當然,社區歡迎你使用 Presto 或圍繞 Presto 做的任何工作。這類工作當然也包括一些看似不相關的貢獻,如編寫博客文章、參加用戶組的會議或研討會、自己編寫和維護插件(也許是用來連接你自己使用的一個數據庫系統)等。
總之,我們鼓勵你和 Presto 團隊一起工作并參與進來,這個項目的成長和繁榮有賴于每個人的貢獻。我們也時刻準備著幫助你。你可以做到!
1.4.6 本書資源
我們提供了一些有關本書的資源,如配置文件示例、SQL 查詢、數據集等。
可以在本書圖靈社區頁面找到這些資源,然后以壓縮文件的方式下載。
1.4.7 鳶尾花數據集
在本書后面的章節中,你將遇到有關鳶尾花和鳶尾花數據集的查詢示例和使用場景。該數據集廣為人知,常用于數據科學中有關分類的例子。
該數據集包含一個簡單的表,該表有 150 條記錄,以列的形式提供了萼片長度、萼片寬度、花瓣長度、花瓣寬度和物種的值。
這個數據集非常小,可以讓用戶方便地測試和執行查詢,并完成一系列不同的分析任務。因此,該數據集非常適合學習,你可以從維基百科的對應頁面上了解有關此數據集的更多信息。
本書的倉庫包含了一個名為 iris-data-set 的目錄。該目錄中存放著以逗號分隔值(CSV)格式保存的數據,還包含了用于創建表并將數據插入的 SQL 文件。讀完第 2 章和 3.1 節后,以下指令將非常容易操作。
要使用鳶尾花數據集,你可以先復制 etc/catalog/memory.properties 文件到 Presto 的安裝路徑下并重啟 Presto。
現在,你就可以使用 Presto CLI 將數據導入 iris
表中。此時,iris
表存在于 default
schema 下,default
schema 又存在于 memory
catalog 下。
$ presto -f iris-data-set/iris-data-set.sql
USE
CREATE TABLE
INSERT: 150 rows
確認數據可以查詢:
$ presto --execute 'SELECT * FROM memory.default.iris;'
"5.1","3.5","1.4","0.2","setosa"
"4.9","3.0","1.4","0.2","setosa"
"4.7","3.2","1.3","0.2","setosa"
...
此外,你還可以使用任何可以連接到 Presto 的 SQL 管理工具來運行查詢,如 3.2 節介紹的 Java 數據庫連接(JDBC)驅動。
第 8 章和第 9 章包含一些使用此數據集的查詢案例,6.8 節提供了有關內存連接器的信息。
1.4.8 航班數據集
與鳶尾花數據集類似,本書后面還將介紹航班數據集的查詢案例和使用場景。這一數據集比鳶尾花數據集復雜,它包含關于航空公司、機場及其他信息的多個查詢表,也包含有關特定航班的業務數據。這使得此數據集適用于使用 Join 操作的更復雜的查詢和聯邦查詢(其中不同表位于不同的數據源)。
此數據集的數據來自美國聯邦航空管理局(FAA),專用于分析。flights
表的 schema 比較大,表 1-1 展示了其中一部分列。
表 1-1:可用列的子集

數據集中的每一行表示從美國機場起飛或到達美國機場的航班。
1.5 Presto簡史
Facebook 于 2008 年開源了 Hive,它之后成了 Apache Hive。Hive 在 Facebook 內部被廣泛用于在其巨大的 Apache Hadoop 集群上執行 HDFS 上的數據分析任務。
Facebook 的數據分析師使用 Hive 在大型數據倉庫上執行交互式查詢。在 Facebook 開發出 Presto 之前,所有的分析師都依賴于 Hive,但 Hive 并不適用于 Facebook 這種大數據規模下的交互式查詢。2012 年,Facebook 的 Hive 數據倉庫已經有 250PB 了,它每天需要處理數百個用戶的成千上萬條查詢。在 Facebook 內部,Hive 逐漸到達極限,并且它無法查詢其他數據源。
Facebook 從零開始設計出了 Presto,以便在其數據規模下快速地執行查詢。Presto 不是創建一個新系統并將數據遷移過去,而是通過可插拔的連接器系統,在數據存儲的本地讀取數據。Hive 連接器是 Presto 最早的連接器之一(參見 6.4 節),它直接查詢存儲在 Hive 數據倉庫的數據。
2012 年,4 個 Facebook 工程師開始研發 Presto,以滿足 Facebook 在分析場景中對性能、擴展性和延伸性上的需求。Presto 最初就是要構建為開源項目。在 2013 年年初,Presto 的初始版本在 Facebook 內部生產環境上線。同年秋天,Facebook 正式開源 Presto。鑒于 Presto 在 Facebook 內部取得的成功,許多其他大型互聯網公司也開始使用它,如 Netflix、LinkedIn、Treasure Data 等,并還有更多的公司緊隨其后。
2015 年,Teradata 聲明將向 Presto 投入多達 20 個工程師來貢獻代碼,他們專注于添加企業特性,如安全提升和生態系統工具集成。2015 年晚些時候,Amazon 開始在 AWS Elastic MapReduce(EMR)系統中添加 Presto。2016 年,Amazon 發布了以 Presto 作為主要基石的 Athena 服務。2017 年,Starburst 橫空出世,它是一家專門推廣 Presto 的公司。
2018 年末,Presto 的創始人離開 Facebook,成立了 Presto 軟件基金會,以使該項目保持協作與獨立。自那時起,Presto 的創新和增長速度都更上一層樓。
今天,Presto 社區欣欣向榮,許多知名公司大規模地使用它。這個項目現在由來自世界各地許多公司的開發者和貢獻者組成的繁榮社區維護,這些公司包括阿里巴巴集團、Amazon、Appian、Gett、Google、Facebook、Hulu、Line、LinkedIn、Lyft、Motorola、Qubole、Red Hat、Salesforce、Starburst、Twitter、Uber、Varada、Walmart 和 Zoho。
1.6 小結
本章介紹了 Presto 以及它的一些特性,還探索了其可能的使用場景。
在第 2 章中,你將安裝 Presto 并運行它,將它連接到一個數據源,并了解如何查詢數據。