- AWS Glue 教程
- AWS Glue - 首頁
- AWS Glue - 簡介
- AWS Glue - 開始使用
- AWS Glue - 資料目錄
- AWS Glue - Amazon S3 整合
- AWS Glue - 爬蟲
- AWS Glue - 效能最佳化
- AWS Glue - 成本最佳化
- AWS Glue 資源
- AWS Glue 快速指南
- AWS Glue - 資源
- AWS Glue - 討論
AWS Glue 快速指南
AWS Glue 是亞馬遜網路服務 (AWS) 提供的完全託管的無伺服器資料整合雲服務。它旨在幫助使用者準備和轉換資料,用於分析、機器學習和應用程式開發。使用 AWS Glue,您可以連線到 70 多個不同的資料來源,並在中心化資料目錄中管理您的資料。
作為無伺服器資料整合服務,AWS Glue 自動執行與 ETL(提取、轉換、載入)流程相關的許多工作。它簡化了資料在各種來源和目標之間的提取、清理、豐富和移動。
AWS Glue 還非常容易與其他 AWS 服務整合,例如 Amazon S3、RDS、Redshift 和 Athena。此功能使其成為希望構建資料湖或資料倉庫的組織的理想選擇。
AWS Glue 的關鍵元件
AWS Glue 的關鍵元件如下所述:
1. Glue 資料目錄
Glue 資料目錄是一箇中央儲存庫,用於儲存有關您的資料元資料資訊。它會自動掃描和組織資料,以便使用者可以輕鬆地搜尋、查詢和管理資料集。它還可以很好地與 AWS 工具(如 Redshift 和 Athena)連線,允許使用者平滑地訪問資料。
2. 爬蟲
我們在 AWS Glue 中定義的 ETL 作業使用資料目錄表作為源和目標。這些資料目錄表應始終保持更新。
爬蟲在 AWS Glue 中的作用是自動發現新資料,識別其模式,並相應地更新資料目錄。它們確保元資料始終是最新的。
3. Glue 作業
Glue 作業用於定義和管理 ETL 工作流。它們提取資料,使用 Apache Spark 轉換資料,然後將其載入到目標系統中。您可以按需執行作業,也可以安排它們按指定的時間間隔執行。Glue 作業是資料轉換過程的核心。
4. 觸發器
藉助觸發器,使用者可以根據計劃或特定事件自動執行作業。觸發器的使用有助於自動化重複性任務或構建複雜的資料管道。
5. 作業筆記本
AWS Glue 使用 Jupyter Notebook 提供 IDE(互動式開發環境)。您可以互動式地執行查詢、分析資料和開發 Glue 作業。
6. Glue Studio
顧名思義,Glue Studio 是一個視覺化介面,用於建立、執行和監控 ETL 工作流,無需編寫程式碼。它對於非技術使用者或不熟悉 Apache Spark 的使用者很有用。
AWS Glue 的功能
我們可以將 AWS Glue 的重要功能分為以下三類:
1. 發現和組織資料
AWS Glue 使您可以以結構化的方式組織元資料,以便您可以輕鬆地在一個位置儲存、搜尋和管理所有資料。
AWS Glue 爬蟲會自動發現數據並將其整合到您的資料目錄中。它驗證並控制對您的資料庫和表的訪問。
2. 轉換、準備和清理用於分析的資料
您可以在 Glue Studio 中定義 ETL 流程,它會自動為此流程生成程式碼。AWS Glue 的**作業筆記本**提供需要最少設定的無伺服器筆記本。使用這些筆記本,您可以快速開始您的專案。
AWS Glue 具有**敏感資料檢測**功能,允許您在您的**資料湖**和管道中定義、識別和處理敏感資料。AWS Glue 允許使用者**互動式地探索和準備資料**。
3. 構建和監控資料管道
您可以使用**爬蟲**或基於事件的觸發器的 AWS**Glue 作業**來**自動化作業**。它允許您使用您選擇的引擎(Apache Spark 或 Ray)來執行作業。
您可以組織和管理不同爬蟲、作業和觸發器的 ETL 流程和整合活動。
AWS Glue - 開始使用
按照以下步驟設定 AWS Glue 以完成您的第一個作業:
步驟 1:先決條件
您必須擁有**AWS 賬戶**才能使用**AWS Glue**。您應該擁有**IAM 角色**。它允許 AWS Glue 訪問您在 Amazon S3、RDS 或任何其他資料來源中的資料。
此外,您應該將您的**資料儲存在 Amazon S3**、RDS 或其他受支援的資料庫中。
步驟 2:設定 AWS Glue 資料目錄
首先,在 Glue 資料目錄中建立一個數據庫。接下來,您需要設定一個爬蟲來掃描和分類您的資料來源(例如 Amazon S3)。
爬蟲的作用是自動檢測資料型別並在 Glue 資料目錄中建立元資料表。
步驟 3:在 AWS Glue 中建立一個新作業
資料編目完成後,轉到**AWS Glue 控制檯**並選擇**作業**。然後,單擊**新增作業**以建立一個新的 ETL 作業。
接下來,您需要配置作業。使用以下選項進行配置:
- **命名**您的作業。
- 選擇 Glue 將使用的**IAM 角色**。
- 選擇您的**ETL 指令碼源**(自動生成或自定義編寫)。
- 定義**資料來源**(Amazon S3、RDS 等)和**目標**
這是可選的,但最好將**轉換**或**過濾器**新增到您的作業指令碼。
步驟 4:執行您的 Glue 作業
設定完成後,檢視作業設定並單擊**執行作業**。AWS Glue 將根據定義的 ETL 指令碼開始處理資料。
現在,您可以在**作業**部分的**AWS Glue 控制檯**中監控作業的進度。
步驟 5:驗證輸出
作業完成後,要驗證輸出,請檢查目標位置(例如 Amazon S3)。傳輸的資料應成功載入到那裡。
建立 AWS Glue 爬蟲和資料庫
AWS Glue 的關鍵元件之一是**爬蟲**,它會自動發現新資料,識別其模式,並相應地更新資料目錄。以下是為您的資料建立 AWS Glue 爬蟲和資料庫的步驟。
步驟 1:設定您的 AWS Glue 資料庫
在 AWS Glue 中建立爬蟲之前,您需要設定一個**資料庫**。此資料庫將充當資料來源元資料的容器。
按照以下步驟設定資料庫:
- 首先,登入到 AWS Glue 控制檯。
- 在左側導航窗格中,單擊資料目錄部分下的**資料庫**。
- 選擇**新增資料庫**並輸入資料庫的名稱(例如,my-data-catalog)。
- 最後,單擊**建立**按鈕,您的資料庫即可使用。
步驟 2:建立 AWS Glue 爬蟲
首先,轉到**AWS Glue 控制檯**並導航到**爬蟲**部分。接下來,單擊**建立爬蟲**按鈕。
現在,輸入爬蟲的名稱(例如,my-data-crawler)。
您還需要定義**資料來源**。這可以是 Amazon S3、DynamoDB 或任何儲存您資料的受支援資料來源。
接下來,在**配置安全設定**部分,設定允許 AWS Glue 訪問您的資料的**IAM 角色**。然後,指定您之前建立的**目標資料庫**。爬蟲將在此處儲存它發現的元資料。
您可以安排爬蟲按需執行或定期執行以保持元資料最新。最後,檢視您的設定並單擊**完成**。
步驟 3:執行爬蟲
設定爬蟲後,首先返回 Glue 控制檯中的爬蟲部分並選擇您新建立的爬蟲。
接下來,單擊**執行爬蟲**以啟動該過程。爬蟲完成後,它將使用它發現的每個資料集的表和元資料填充 Glue 資料目錄。
AWS Glue - 資料目錄
AWS Glue 資料目錄是儲存有關您的資料元資料資訊的中央儲存庫。簡單來說,資料目錄就像一個數據字典,它儲存諸如資料結構、資料位置以及如何使用查詢訪問資料之類的詳細資訊。此元資料資訊對於管理和組織大量資料非常重要。
您可以將資料儲存在 Amazon S3、Redshift 或 AWS 中的任何其他位置。AWS Glue 資料目錄的主要作用是集中管理資料並使其可供分析。
資料目錄的關鍵功能
以下是 AWS Glue 資料目錄的一些關鍵功能:
- **自動資料檢測** - AWS Glue 爬蟲掃描您的資料來源,識別模式,並自動編目元資料。此資料儲存在 AWS Glue 資料目錄中。
- **集中式元資料管理** - 資料目錄的關鍵功能之一是它將所有元資料集中在一個地方。這就是為什麼使用者無需手動定義資料的原因。它還可以更輕鬆地管理大型資料環境。
- **與 AWS 服務整合** - AWS Glue 資料目錄可以輕鬆地與 AWS 服務(如 Amazon Athena、Redshift 和 SageMaker)整合。此整合允許使用者執行查詢或構建 ML 模型,而無需手動處理資料。
如何使用 AWS Glue 資料目錄?
使用 AWS Glue 資料目錄非常簡單。首先,您需要建立一個數據庫,用於儲存資料集的元資料。我們在上一節中討論了建立資料庫的方法。
擁有資料庫後,您需要建立一個 AWS Glue 爬蟲,它將自動掃描您的源。爬蟲識別資料結構並使用表名、列和資料型別等元資料更新資料目錄。然後,可以使用 Amazon Athena 等工具查詢此元資料。
使用 Glue 資料目錄管理元資料
您擁有可用於查詢的元資料,但對於處理大量資料的組織而言,有效管理此元資料非常重要。在學習管理元資料的方法之前,瞭解此元資料非常重要。
瞭解元資料
元資料是關於資料的資料。它提供以下重要資訊:
- **模式** - 它表示資料集的結構。它包括表、列和資料型別。
- 位置 −顧名思義,這是您的資料儲存在AWS中的位置。它可以是Amazon S3儲存桶或Amazon Redshift之類的資料庫。
- 描述 − 它提供有關資料的其他資訊。可能包括其用途以及資料來源。
管理元資料的方法
以下是一些您可以用來管理元資料的方法:
1. 手動編輯元資料
雖然AWS Crawlers的自動資料檢測已經足夠,但您也可以手動編輯資料。要手動編輯元資料,首先在資料目錄中找到您的資料庫和表。現在,您可以點選要編輯的特定表。您可以編輯其屬性、列和資料型別。
2. 使用標籤編輯元資料
標籤有助於更有效地組織和管理元資料。您可以使用鍵值對標記資料庫和表,以便輕鬆對其進行分類。
標籤還可以增強元資料的可搜尋性,從而更容易在大型集合中找到特定資料集。
Amazon S3與AWS Glue整合
Amazon S3(簡單儲存服務)是一種靈活可靠的儲存服務,非常適合管理大型資料集。AWS Glue是一種提取、轉換和載入 (ETL) 服務,當Amazon S3與之整合時,資料的管理和處理變得非常容易。
在Amazon S3中使用AWS Glue儲存資料的優勢
以下是將資料儲存在Amazon S3中並使用AWS Glue的關鍵優勢:
- 在S3中使用AWS Glue儲存資料,使其可以輕鬆訪問儲存在S3儲存桶中的資料。我們可以直接對S3資料執行ETL作業,並將其轉換為有意義的格式。
- 藉助Glue Crawlers,AWS Glue可以自動檢測儲存在S3儲存桶中的資料的模式。它使我們能夠更快、更高效地查詢資料。
- 使用AWS Glue內建的Apache Spark環境,我們可以轉換儲存在Amazon S3儲存桶中的資料。
如何在Amazon S3中使用AWS Glue儲存和處理資料?
請按照以下步驟在S3儲存桶中使用AWS Glue儲存和處理資料:
步驟1:設定您的Amazon S3儲存桶 − 在使用AWS Glue之前,必須將資料儲存在Amazon S3儲存桶中。您可以透過兩種方式將資料集上傳到S3儲存桶:手動或透過檔案傳輸之類的自動化流程。
步驟2:建立Glue Crawler − 將資料儲存在S3儲存桶中後,您可以設定Glue Crawler,它將掃描您的S3儲存桶,提取元資料並將其儲存到Glue資料目錄中。
步驟3:定義和執行ETL作業 − 建立元資料後,您現在可以在AWS Glue中建立一個ETL作業來處理儲存在S3儲存桶中的資料。
步驟4:查詢和分析資料 − 資料處理完成後,您可以使用AWS服務(如Amazon Athena)查詢資料。您還可以將其載入到Amazon Redshift之類的資料庫倉庫中以進行進一步分析。
使用Amazon S3管理AWS Glue作業中的分割槽
使用Amazon S3時,管理AWS Glue中的分割槽對於最佳化效能和降低處理成本非常重要。
分割槽,顧名思義,是根據特定鍵(如日期、區域或產品)將資料集劃分為更小、更易於管理的部分。換句話說,分割槽是將大型資料集組織成較小的邏輯段的一種方式。
例如:
s3://your-bucket-name/data/year=2023/month=09/day=27/
在此示例中,資料按年份、月份和日期進行分割槽。
在AWS Glue中設定分割槽
請按照以下步驟在AWS Glue中設定分割槽:
步驟1:在Amazon S3中分割槽資料 − 使用基於分割槽鍵(例如,年份、月份、日期)的目錄結構來組織Amazon S3中的資料。例如,s3://my-bucket/sales_data/year=2023/month=09/day=27/。
步驟2:配置AWS Glue Crawler − 將分割槽資料放入S3後,建立並配置AWS Glue Crawler。Crawler將自動識別資料夾結構並將分割槽資訊新增到Glue資料目錄中。
步驟3:建立或修改Glue作業 − 您既可以建立也可以修改Glue ETL作業。在這兩種情況下,都應引用Glue資料目錄中的分割槽資料。AWS Glue將使用此資訊僅處理必要的分割槽。
使用DynamicFrames管理分割槽
為了輕鬆管理分割槽資料,AWS Glue提供了DynamicFrames。您可以使用from_catalog函式載入分割槽資料,並使用filter函式處理特定分割槽。讓我們看看下面的示例:
import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session # Load partitioned data from Glue Data Catalog dynamic_frame = glueContext.create_dynamic_frame.from_catalog(database="my_database", table_name="sales_data") # Filter data for a specific year and month filtered_frame = dynamic_frame.filter(f => f["year"] == "2023" and f["month"] == "09") # Continue with the ETL process -----------------
上面的指令碼將根據年份和月份過濾資料。然後,它執行ETL流程中定義的轉換或操作。最終輸出將寫入您的Amazon S3儲存桶。
AWS Glue - 爬蟲
我們在 AWS Glue 中定義的 ETL 作業使用資料目錄表作為源和目標。這些資料目錄表應始終保持更新。
Crawler在AWS Glue中的作用是自動發現新資料,識別其模式,並相應地更新資料目錄。它們透過自動發現和編目資料來確保元資料始終是最新的。
Crawler如何自動化資料發現和編目?
AWS Glue Crawlers為我們提供了一種有效的方法來自動化資料發現和編目。透過掃描資料來源、識別模式、生成元資料以及將其組織到Glue資料目錄中,它們消除了手動資料管理的需要。這種自動化有助於企業確保其資料始終可用並隨時準備進行分析。
讓我們看看Crawler如何自動化資料發現和編目:
1. 資料格式識別
建立和配置AWS Crawlers後,它們首先會識別資料格式。它們足夠智慧,可以識別各種資料格式,例如JSON、CSV、Avro、Parquet和ORC。Crawler會檢查定義的資料來源中檔案的格式和結構,以對資料型別、模式和表進行分類。
2. 生成元資料
識別資料格式後,Crawler會為每個表和資料集生成元資料。此元資料包括有關模式的資訊,例如列名、資料型別以及表之間的關係。
3. 編目資料
生成元資料後,Crawler會透過將模式資訊儲存在Glue資料目錄中來自動編目資料。資料目錄將元資料組織到資料庫和表中,其他AWS服務(如Athena、Redshift和SageMaker)可以訪問這些資料庫和表以進行分析和機器學習。
4. 自動排程
我們還可以將Crawler安排為定期自動執行。這確保了無需人工干預即可持續發現和編目新的或更新的資料。它允許企業保持其資料目錄的最新狀態並隨時準備進行分析。
5. 資料轉換
AWS Crawlers自動化資料發現和編目。Crawler生成的元資料對於設定AWS Glue作業以轉換資料非常重要。編目後,可以使用Glue的ETL功能來清理、豐富和轉換資料。
AWS Glue - 效能最佳化
為了提高效率並降低資料處理工作流程的成本,您必須最佳化AWS Glue提取、轉換和載入 (ETL) 作業。
在本節中,我們重點介紹了一些最佳化AWS Glue ETL作業的最佳實踐。
最佳化AWS Glue中的資料分割槽
資料分割槽是加快查詢時間和減少ETL作業整體處理時間的關鍵因素。以下是最佳化資料分割槽的最佳實踐:
- 您可以使用邏輯資料夾結構(例如,基於日期的分割槽(例如,/year=2024/month=09/day=26/))在Amazon S3中組織資料。
- 您可以在AWS Glue中使用動態框架來自動檢測分割槽並僅載入相關資料。這將提高作業的效能。
- 您應該避免建立太多小的分割槽。這會增加處理成本。
最佳化AWS Glue中的I/O操作
輸入/輸出操作也在ETL作業的效能中扮演著重要的角色。讓我們看看如何最佳化I/O操作:
- 您應該將資料轉換為最佳化的列式格式,例如Apache Parquet或ORC。這些格式減少了I/O,因為它們只加載處理所需的列。
- 您可以使用Amazon S3多部分上傳和並行處理來加快AWS服務之間的資料傳輸。
使用下推謂詞
下推謂詞有助於在ETL流程的早期過濾資料。這意味著,只處理相關的資料子集。當您處理大型資料集時,這很有用。
請按照以下步驟最佳化下推謂詞:
- 您應該直接在資料來源上應用過濾器。這將最大限度地減少下游處理的資料量。例如,您可以在將大型資料集載入到Glue作業之前,先過濾掉一些特定行。
- 您可以在ETL指令碼中使用push_down_predicate引數。它只加載轉換過程所需的資料。
最佳化AWS Glue中的轉換
提高效能的關鍵之一是降低轉換的複雜性。AWS Glue提供內建轉換,但以下一些技術可以使ETL作業更高效。
- 嘗試避免冗餘轉換,確保僅在必要時應用聯接、過濾或聚合等操作。
- 當其中一個數據集較小時,您可以使用廣播聯接。此技術加快了聯接操作的速度。
在AWS Glue中啟用作業書籤
AWS Glue作業書籤旨在跟蹤ETL作業中最後成功處理的資料。您可以使用作業書籤來避免重新處理已處理的資料。這樣可以節省時間和資源。
- 當您處理增量資料時,始終啟用作業書籤。
- 確保為ETL作業使用的Amazon S3或資料庫中儲存的資料集正確配置作業書籤。
管理AWS Glue中的記憶體和資源分配
高效的資源管理確保最佳效能、成本效益並防止作業失敗。AWS Glue提供各種方法來管理ETL作業的記憶體和資源分配。
選擇正確的Worker型別
AWS Glue允許您根據工作負載需求選擇三種不同的worker型別:標準型、G.1X和G.2X worker。每種worker型別都提供不同級別的記憶體和處理能力。
對於通用ETL作業,您應該使用標準型worker;而對於複雜的交易或處理大型資料集,您可以選擇G.1X或G.2X worker。
調整DPU數量
AWS Glue作業使用資料處理單元 (DPU) 來進行計算。為了顯著提高效能,您應該分配正確數量的DPU。您可以先分配最小數量的DPU,然後根據作業需求增加。
監控和調整記憶體使用情況
AWS Glue透過AWS CloudWatch指標提供內建的記憶體監控功能。您可以即時監控記憶體消耗,並根據需要調整作業引數。
最佳化作業並行性
AWS Glue可以高效地將作業分配到多個節點。此功能確保作業執行速度更快,從而顯著提高效能。
AWS Glue - 成本最佳化
AWS Glue定價基於按需付費模式,這意味著您只需為使用的資源付費。AWS Glue收費分為多個組成部分。收費會根據您如何使用服務而有所不同。
以下是AWS Glue定價的一些關鍵因素:
資料處理單元 (DPU)
AWS Glue中的資料處理單元 (DPU)是CPU、記憶體和網路資源的組合。您將根據在ETL作業執行期間使用的DPU數量付費。
執行Glue ETL作業的成本按秒計算,最小計費時長為1分鐘。
AWS Glue爬蟲
爬蟲會自動掃描您的資料以提取元資料並編錄Glue資料。Glue爬蟲按DPU小時計費,最小計費時長為10分鐘。
AWS Glue資料目錄
Glue資料目錄的計費基於儲存在目錄中的物件數量(例如資料庫、表和分割槽)。AWS提供免費套餐,每月免費提供100萬個儲存物件和100萬個請求。
開發端點
開發端點允許您以互動方式建立和測試ETL指令碼。其定價基於為開發端點分配的DPU。
降低AWS Glue成本的技巧
AWS Glue為使用者提供了強大的資料管理和處理工具,但如果管理不當,成本可能會增加。
在本節中,我們重點介紹了一些降低AWS Glue成本的策略:
最佳化資料處理單元 (DPU)
配置AWS Glue作業時,嘗試僅分配所需的DPU數量。這是因為使用超過必要的DPU會增加您的成本。
您應該使用AWS CloudWatch監控Glue作業的資源使用情況。為了管理成本,您可以根據實際記憶體和CPU消耗調整DPU。
最大限度地減少爬蟲執行次數
與其連續執行爬蟲,不如將其安排為僅在需要發現或編錄新資料時執行。
與其在整個資料集上執行爬蟲,不如將其限制在特定分割槽或資料夾中。這將減少處理時間和成本。
明智地使用Glue資料目錄
您可以透過將儲存物件的數量保持在100萬以下來僅使用Glue資料目錄的免費套餐。
您應該定期檢查Glue資料目錄並刪除過時或未使用的表和分割槽,以避免不必要的收費。
使用免費套餐進行開發端點
如前所述,開發端點按小時計費。因此,請嘗試在不使用時終止它們。
最佳化ETL作業
您可以使用下推謂詞在源處過濾資料,以減少Glue作業處理的資料量。
您應該使用資料分割槽策略來最佳化查詢效能。
監控和分析成本
您應該使用AWS成本管理器跟蹤您的Glue使用情況。您還可以設定計費警報,以便在您的Glue成本超過某個限制時收到通知。