- 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 - 討論
Amazon S3 與 AWS Glue 整合
使用 AWS Glue 將資料儲存在 Amazon S3 中
Amazon S3 (簡單儲存服務) 是一種靈活可靠的儲存服務,非常適合管理大型資料集。AWS Glue 是一種提取、轉換和載入 (ETL) 服務,當 Amazon S3 與其整合時,資料的管理和處理變得非常容易。
使用 AWS Glue 將資料儲存在 Amazon S3 中的優勢
以下是使用 AWS Glue 將資料儲存在 Amazon S3 中的關鍵優勢:
- 使用 AWS Glue 將資料儲存在 S3 中,可以輕鬆訪問儲存在 S3 儲存桶中的資料。我們可以直接對 S3 資料執行 ETL 作業,並將其轉換為有意義的格式。
- 藉助 Glue 爬蟲,AWS Glue 可以自動檢測儲存在 S3 儲存桶中的資料的模式。這使我們能夠更快、更高效地查詢資料。
- 使用 AWS Glue 的內建 Apache Spark 環境,我們可以轉換儲存在 Amazon S3 儲存桶中的資料。
如何使用 AWS Glue 儲存和處理 Amazon S3 中的資料?
請按照以下步驟使用 AWS Glue 儲存和處理 S3 儲存桶中的資料:
步驟 1:設定您的 Amazon S3 儲存桶 - 在使用 AWS Glue 之前,必須將資料儲存在 Amazon S3 儲存桶中。您可以透過兩種方式將資料集上傳到 S3 儲存桶:手動或透過檔案傳輸等自動化流程。
步驟 2:建立 Glue 爬蟲 - 將資料放入 S3 儲存桶後,您可以設定一個 Glue 爬蟲,它將掃描您的 S3 儲存桶,提取元資料並將其儲存到 Glue 資料目錄中。
步驟 3:定義和執行 ETL 作業 - 建立元資料後,您現在可以在 AWS Glue 中建立一個 ETL 作業來處理儲存在 S3 儲存桶中的資料。
步驟 4:查詢和分析資料 - 資料處理完成後,您可以使用 Amazon Athena 等 AWS 服務查詢資料。您還可以將其載入到 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 爬蟲 - 將分割槽資料放入 S3 後,建立並配置 AWS Glue 爬蟲。爬蟲將自動識別資料夾結構並將分割槽資訊新增到 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 儲存桶。