選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

具有限制執行的工作負載分割

焦點模式
具有限制執行的工作負載分割 - AWS Glue

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

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

Spark 應用程式中的錯誤通常來自於效率低下的 Spark 指令碼,分散式記憶體執行大規模轉換以及資料集異常。有很多原因可能會導致驅動程式或執行程序的記憶體不足問題,例如資料偏斜,列出太多物件或大資料混洗。當您使用 Spark 處理大量積壓資料時,通常會出現這些問題。

AWS Glue 可讓您解決 OOM 問題,並透過工作負載分割讓 ETL 處理更輕鬆。啟用任務負載分割後,每個 ETL 任務執行只會挑選未處理的資料,而資料集大小或此任務執行時要處理的檔案數目上限。未來的任務執行將處理剩餘的資料。例如,如果需要處理 1000 個檔案,您可以將檔案數目設定為 500 個,並將它們分成兩個任務執行。

只有 Amazon S3 資料來源支援工作負載分割。

啟用工作負載分割

您可以透過手動設定指令碼中的選項或新增目錄資料表屬性來啟用限制執行。

若要在指令碼中啟用具有限制執行的工作負載分割:
  1. 若要避免重新處理資料,請在新任務或現有任務中啟用任務書籤。如需詳細資訊,請參閱使用任務書籤追蹤已處理的資料

  2. 修改您的指令碼,並在AWS Glue getSource API 的附加選項中設定有界限制。您還應該設定工作書籤的轉換內容,以儲存 state 元素。例如:

    Python

    glueContext.create_dynamic_frame.from_catalog( database = "database", table_name = "table_name", redshift_tmp_dir = "", transformation_ctx = "datasource0", additional_options = { "boundedFiles" : "500", # need to be string # "boundedSize" : "1000000000" unit is byte } )

    Scala

    val datasource0 = glueContext.getCatalogSource( database = "database", tableName = "table_name", redshiftTmpDir = "", transformationContext = "datasource0", additionalOptions = JsonOptions( Map("boundedFiles" -> "500") // need to be string //"boundedSize" -> "1000000000" unit is byte ) ).getDynamicFrame()
    val connectionOptions = JsonOptions( Map("paths" -> List(baseLocation), "boundedFiles" -> "30") ) val source = glueContext.getSource("s3", connectionOptions, "datasource0", "")
若要在資料目錄資料表中啟用具有限制執行的工作負載分割:
  1. 在資料目錄的資料表結構 parameters 欄位中設定鍵值對。如需詳細資訊,請參閱檢視與編輯資料表的詳細資訊

  2. 設定資料集大小或處理的檔案數目的上限:

    • boundedSize 設定為資料集目標大小 (以位元組為單位)。從資料表達到目標大小後,任務執行將會停止。

    • 設定 boundedFiles 為目標檔案數量。處理檔案的目標數目後,任務執行將會停止。

    注意

    您應該只設定一個 boundedSizeboundedFiles,因為只支援單一邊界。

設定 AWS Glue 觸發以自動執行任務

啟用限定執行之後,您可以設定 AWS Glue 觸發自動執行任務,並以循序執行遞增方式載入資料。前往 AWS Glue 主控台並建立觸發、設定排程時間,並連接至您的任務。然後它會自動觸發下一個任務執行並處理新批次的資料。

您也可以使用 AWS Glue 工作流程來協調多個任務,以平行處理來自不同分割區的資料。如需詳細資訊,請參閱 AWS Glue 觸發AWS Glue 工作流程

如需更多關於使用案例和選項的詳細資訊,請參閱部落格在 AWS Glue 中使用工作負載分割來最佳化 Spark 應用程式

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。