本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 中讀取和寫入 bzip2
與 gzip
封存。
主題
設定 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_type
、connection_options
、format
和 format_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"
:(選用) 用於讀取。SQLWHERE
子句的內容。從具有大量分割區的資料型錄資料表讀取時使用。從資料型錄索引擷取相符的分割區。與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)
使用下列有 "connectionType": "orc"
的連線選項:
-
paths
:(必要) 要讀取的 Amazon S3 路徑清單。 -
(其他選項名稱/值對):任何其他選項 (包括格式化選項) 都會直接傳遞至 SparkSQL
DataSource
。
"connectionType": "parquet"
指定以 Apache Parquet
使用下列有 "connectionType": "parquet"
的連線選項:
-
paths
:(必要) 要讀取的 Amazon S3 路徑清單。 -
(其他選項名稱/值對):任何其他選項 (包括格式化選項) 都會直接傳遞至 SparkSQL
DataSource
。