AWS Athena:您需要知道的一切

已發表: 2022-05-02

AWS Athena 是一種靈活、經濟高效的查詢服務,用於存儲在 AWS S3 中的數據。

AWS 是世界上最大的雲提供商之一。 它為雲存儲和計算需求提供了多種服務。 AWS S3 是 AWS 平台上最受歡迎的服務之一。 它提供無與倫比的數據持久性和可用性,同時也是雲中最便宜的存儲選項之一。

鑑於其眾多功能和理論上無限的存儲空間,您可以在 S3 存儲桶中擁有 TB 或 PB 的數據。 如果我們要打開每個文件並手動讀取數 PB 的數據,分析這些數據幾乎是不可能的。 這就是 AWS Athena 服務的用武之地。

簡而言之,AWS Athena 用作數據分析服務,只需使用 SQL 查詢訪問 S3 存儲桶中可用的數據。 因此,如果您甚至了解 SQL 的基礎知識,您就可以開始使用 AWS Athena 分析 S3 數據。

讓我們用一個簡短的例子來理解這一點。 讓我們假設您已將其中一個存儲桶配置為您在組織中的多個賬戶中擁有的所有平衡器的訪問日誌存儲桶。 您將如何查詢多年的日誌數據並從這些日誌文件中獲得重要的有意義的見解? 答案是 AWS Athena。

AWS 雅典娜的特點

  • 基於 SQL 的工具: AWS Athena 是一個非常簡單易用的基於 SQL 的服務。 您只需將 Athena 指向您的存儲桶之一,定義數據架構,然後開始使用存儲桶中的 SQL 查詢。
  • 無服務器:您不必維護運行 AWS Athena 的基礎設施。 Athena 是無服務器的,並且經過優化,可以根據您的要求自動使用多個計算資源。
  • 快速且優化: Athena 已經過優化,可以使用有效數量的資源盡快交付您的查詢結果。 它非常適合對 S3 數據進行小而復雜的分析。
  • 高性價比: Athena 是按使用付費的服務。 這意味著使用 AWS Athena 沒有基本成本; 您只需為在 Athena 服務中運行的查詢付費。
  • 數據的持久性和可用性:由於 Athena 依賴於 S3 存儲桶中的數據,因此您可以放心,數據具有高可用性和持久性。
  • 支持: Athena 支持多種文件格式,例如 JSON、CSV、Avro、ORC 等。
  • 安全性: Athena 利用 IAM、存儲桶策略和 ACL 等安全功能,使其高度安全。
  • Athena 後端: Athena 使用開源 Presto 作為後端。 Presto 是一個分佈式 SQL 引擎,用於查詢和分析大數據工作負載。

AWS Athena 的定價和優化

使用 AWS Athena 時,使用 AWS Athena 時,您需要為每 TB 掃描支付 5 美元的費用。 對於某些 AWS 區域,此價格可能略有不同。

  • 高效查詢:如果您熟悉 SQL,則必須知道使用 SQL 從數據中獲取某些結果的方法可能不止一種。 要優化 Athena,您可以使用運行查詢所需時間更短的高效查詢。
  • 數據轉換:如果您想進一步優化查詢,您可以將數據壓縮、分區或轉換為更小的數據集,從而進一步減少查詢運行時間。 通過使用數據轉換,您可以將查詢優化多達 90%。
  • 連接虛擬表:連接表是 SQL 的一個非常重要的特性。 雖然這看起來像是一個簡單的操作,但它可能是一個非常複雜的操作。 建議將較大的表放在左側,將數據較少的表放在右側。

AWS Athena 和 Redshift Spectrum 之間的區別

Redshift Spectrum 是另一項可用於在 AWS S3 存儲桶上運行查詢的服務。 Redshift Spectrum 和 Athena 都是無服務器的,可以在 S3 上運行複雜的查詢,並且每處理一個 Terrabyte 數據的價格為 5%,那麼有什麼區別呢?

表現

AWS Athena 使用 AWS 提供的資源池中的計算資源。 相比之下,Redshift 頻譜使用根據 Redshift 集群大小分配的資源。 這使您可以更好地控制 Redshift Spectrum 服務使用的資源,如果您想要提高性能,您可以隨時增加 Redshift 集群的大小。

加載數據進行處理

這兩種服務都使用虛擬表對您的數據運行 SQL 查詢。 虛擬表是使用 Glue 數據目錄製作的,用於模式管理。 Athena 可以直接使用 Glue 數據目錄模式中的數據,而使用 Redshift Spectrum 時,您需要從 Glue 數據目錄模式中配置外部表。

這些是兩種服務之間的主要區別,因此在 Redshift 頻譜和 Athena 之間進行選擇時。 如果您想查詢 S3 中的數據以及存儲在 Redshift 數據倉庫中的數據,或者如果您願意支付更高的成本來提高您在 S3 中的查詢性能,則應該使用 Redshift Spectrum。 當您的所有數據僅在 S3 存儲桶中時,Athena 會很有用。

AWS Athena 和 S3 Select 之間的區別

S3 select 是 AWS 的另一項無服務器服務,用於使用 SQL 查詢 S3 中的數據。 但是,S3 Select 和 Athena 之間的主要區別在於,您在使用 S3 Select 時只能使用 SQL SELECT 查詢,而 Athena 可以用於各種 SQL 查詢。 S3 select 的另一個限制是您一次只能對一個對象執行 SELECT 操作。

因此,如果您的要求只是從 S3 對像中提取數據或數據子集,則應使用 S3 Select。 對於像 JOIN 這樣的複雜查詢和操作,或者要處理整個 S3 存儲桶中的數據,您應該使用 AWS Athena。

使用 AWS Athena 的優勢

  • Athena 無需為您的數據開發複雜且昂貴的數據分析工具。
  • Athena 是無服務器的,這使它成為一個相當易於使用的服務。 您無需維護基礎架構。
  • AWS 已優化 Athena,使其能夠在您運行 Athena 查詢的幾秒鐘內檢索查詢結果。
  • 由於 Athena 是無服務器的,因此您無需為 Athena 服務付費。 您只需為您選擇運行的查詢付費。 即使您要取消查詢,您也只需為處理的數據而不是整個查詢付費。
  • Athena 可以輕鬆地與其他 AWS 服務集成。 AWS Athena 最重要和最有價值的集成之一是與 AWS Glue 服務。 AWS Glue 是一種 ETL 服務,可用於將數據轉換為更高效、更易讀的形式,然後可以使用 AWS Athena 進行分析。
  • Athena 允許您同時運行多個查詢。

AWS Athena 的限制

  • 行大小:虛擬 AWS Athena 表中的行大小不應超過32 兆字節。 在 CSV 和 JSON 文件非常有限的情況下,可以將此限制增加到最多 100 兆字節,但強烈建議將行大小限制為 32 兆字節以避免不必要的錯誤。
  • 隱藏文件:名稱以下劃線 (_) 或點 (.) 開頭的文件被 Athena 服務視為隱藏文件。 這可以用作避免處理不需要的文件的功能。
  • Athena無法處理 S3 Glacier或 S3 Glacier Deep Archive 中的數據。 這些存儲類僅用於數據歸檔選項,檢索時間從幾分鐘到幾小時不等,因此可以理解 AWS Athena 是否無法從這些類中檢索數據。
  • Athena 不支持存儲過程
  • Athena 版本 1不支持參數化查詢。 這在 Athena 版本 2 中受支持。
  • 不支持 MERGE、UPDATE、CREATE TABLE LIKE、 DESCRIBE INPUTDESCRIBE OUTPUT等語句。

結論

在本文中,我們討論了來自 AWS Athena 的數據分析工具,它的功能、優勢和一些限制。 Athena 是用於處理和分析 S3 存儲桶中數據的最強大工具之一。 甚至服務的限制也非常簡單,如果需要可以解決。

您還可以查看一些保護 AWS S3 存儲的最佳實踐。