Amazon S3 連線 - AWS Glue

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon S3 連線

您可以使用 AWS Glue for Spark 在 Amazon S3 中讀取和寫入檔案。AWSGlue for Spark 支援許多存放在 Amazon S3 中的開箱即用的資料格式,包括 CSV、Avro、JSON、Orc 和 Parquet.。如需有關支援資料格式的詳細資訊,請參閱 AWS Glue for Spark 中的輸入與輸出的資料格式選項。每種資料格式可支援不同的 AWS Glue 功能集。如需有關功能支援的詳細資訊,請參閱資料格式頁面。此外,您還可以讀取和寫入 Hudi、Iceberg 和 Delta Lake 資料湖架構中存放的版本控制檔案。如需有關資料湖架構的詳細資訊,請參閱 將資料湖架構與 AWS Glue ETL 任務搭配使用

藉由 AWS Glue,您可以在寫入時將 Amazon S3 物件分割為資料夾結構,然後透過分割區擷取它,使用簡單的組態提升效能。您還可以設定組態,在轉換資料時將小檔案分組在一起以提高效能。您可以在 Amazon S3 中讀取和寫入 bzip2gzip 封存。

設定 S3 連線

若要在具有 Spark 任務的 AWS Glue 中連線到 Amazon S3,您需要滿足一些先決條件:

  • AWS Glue 任務必須具有相關 Amazon S3 儲存貯體的 IAM 許可。

在某些情況下,您需要設定其他先決條件:

  • 設定跨帳戶存取權時,Amazon S3 儲存貯體上適當的存取權控制。

  • 基於安全理由,您可以選擇透過 Amazon VPC 路由 Amazon S3 請求。這個方法可能會帶來頻寬和可用性方面的挑戰。如需詳細資訊,請參閱 Amazon S3 的 VPC 端點

Amazon S3 連線選項參考

指定 Amazon S3 的連線。

Amazon S3 管理檔案而非資料表,因此除了指定本文件中提供的連線屬性之外,您還需要指定有關檔案類型的其他組態。您可以透過資料格式選項指定這些資訊。如需有關格式選項的詳細資訊,請參閱 AWS Glue for Spark 中的輸入與輸出的資料格式選項。您也可以透過整合 AWS Glue Data Catalog 來指定這些資訊。

如需連線選項和格式選項之間區分的範例,請考慮 create_dynamic_frame_from_options 方法如何採用 connection_typeconnection_optionsformatformat_options。本節特別討論提供給 connection_options 的參數。

使用下列有 "connectionType": "s3" 的連線選項:

  • "paths":(必要) 要讀取的 Amazon S3 路徑清單。

  • "exclusions":(選用) 包含要排除之 Unix 樣式 glob 模式 JSON 清單的字串。例如,"[\"**.pdf\"]" 會排除所有 PDF 檔案。如需 AWS Glue 支援的 glob 語法的詳細資訊,請參閱包含和排除模式

  • "compressionType":或 "compression":(選用) 指定資料的壓縮方式。將 "compressionType" 用於 Amazon S3 來源,以及將 "compression" 用於 Amazon S3 目標。一般來說,如果資料具有標準副檔名,則不需要此項目。可能值為 "gzip""bzip2"。特定格式可能支援其他壓縮格式。如需有關功能支援的詳細資訊,請參閱資料格式頁面。

  • "groupFiles":(選用) 當輸入含有超過 50,000 個檔案時,預設會開啟分組檔案。若要在少於 50,000 個檔案時開啟分組,請將此參數設定為 "inPartition"。若要在超過 50,000 個檔案時停用分組,請將此參數設定為 "none"

  • "groupSize":(選用) 目標群組大小 (以位元組為單位)。系統會根據輸入資料大小和叢集大小來計算預設值。當輸入檔案數少於 50,000 個時,"groupFiles" 必須設定為 "inPartition" 才能讓此設定生效。

  • "recurse":(選用) 如果設定為 true,則會遞迴讀取指定路徑下所有子目錄中的檔案。

  • "maxBand":(選用,進階) 此選項可控制 s3 清單可能會在多長時間 (以毫秒為單位) 後變得一致。使用 JobBookmarks 來考量 Amazon S3 最終一致性時,會特別追蹤修改時間戳記落在最後 maxBand 毫秒內的檔案。使用者大多不需要設定此選項。預設值為 900000 毫秒或 15 分鐘。

  • "maxFilesInBand":(選用、進階) 此選項會指定從最後 maxBand 秒內所要儲存的檔案數上限。如果超過此數量,系統就會略過額外的檔案,等下一個任務執行到來再處理。使用者大多不需要設定此選項。

  • "isFailFast":(選用) 此選項決定 AWS Glue ETL 任務是否擲回讀取器剖析例外狀況。如果設定為 true,則如果 Spark 任務的四次重試都無法正確剖析資料,任務就會快速失敗。

  • "catalogPartitionPredicate":(選用) 用於讀取。SQL WHERE 子句的內容。從具有大量分割區的資料型錄資料表讀取時使用。從資料型錄索引擷取相符的分割區。與 push_down_predicate 一起使用,這是 create_dynamic_frame_from_catalog 方法 (和其他類似方法) 上的一個選項。如需詳細資訊,請參閱 使用目錄分割述詞的伺服器端篩選

  • "partitionKeys":(選用) 用於寫入。資料欄標籤字串陣列。AWSGlue 將按照此組態指定的方式對資料進行分割。如需詳細資訊,請參閱 寫入分割區

  • "excludeStorageClasses":(選用) 用於讀取。指定 Amazon S3 儲存類別的字串陣列。AWSGlue 會根據此組態排除 Amazon S3 物件。如需詳細資訊,請參閱 排除 Amazon S3 儲存體方案

資料格式的已作廢連線語法

某些資料格式可以使用特定連線類型語法來存取。此語法已作廢。建議您改用 AWS Glue for Spark 中的輸入與輸出的資料格式選項 中提供的 s3 連線類型和格式選項來指定格式。

"connectionType": "Orc"

指定以 Apache Hive 最佳化資料列單欄式 (ORC) 檔案格式存放在 Amazon S3 之檔案的連線。

使用下列有 "connectionType": "orc" 的連線選項:

  • paths:(必要) 要讀取的 Amazon S3 路徑清單。

  • (其他選項名稱/值對):任何其他選項 (包括格式化選項) 都會直接傳遞至 SparkSQL DataSource

"connectionType": "parquet"

指定以 Apache Parquet 檔案格式存放在 Amazon S3 之檔案的連線。

使用下列有 "connectionType": "parquet" 的連線選項:

  • paths:(必要) 要讀取的 Amazon S3 路徑清單。

  • (其他選項名稱/值對):任何其他選項 (包括格式化選項) 都會直接傳遞至 SparkSQL DataSource