[英]AWS Glue executors dying
我正在以這種方式從帶有AWS Glue DynamicFrame的S3中讀取實木復合地板文件:
sources = glue_context\
.create_dynamic_frame\
.from_options(connection_type="s3",
connection_options={'paths': source_paths, 'recurse': True,
'groupFiles': 'inPartition'},
format="parquet",
transformation_ctx="source")
完成此操作后,我將為Spark DF轉換DynamicFrame,以應用特定的Spark功能。 最后,將這些結果再次包裝到DynamicFrame中,並使用它寫入Redshift。
發生的是執行者由於
WARN TaskSetManager: Lost task in stage ExecutorLostFailure (executor exited caused by one of the running tasks)
Reason: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used.
Consider boosting spark.yarn.executor.memoryOverhead.
此行為也可以從AWS Glue指標中發現:
我已經讀過這篇文章 ,不幸的是使用JDBC源(在我的情況下為S3),建議在任何地方使用Glue DynamicFrames。 但不幸的是,我確實需要使用Spark DF進行特定的數據轉換。
我該如何解決由於memoryOverhead而不斷死亡的執行程序的問題? 是Spark相關還是Glue?
調整Spark配置可能會有所幫助。
我曾期望使用諸如AWS Glue之類的工具來調優Spark參數不是必需的,並且該工具已由平台處理,但是不幸的是,事實並非如此。
我使用此語法將參數傳遞給膠水作業
密鑰 :-- --conf
值 : spark.yarn.executor.memoryOverhead=2g
此外,引入一些緩存邏輯和重新分區有助於使執行者保持忙碌狀態。 緩存唯一的問題是OOM,可以通過傳遞spark.yarn.executor.memoryOverhead=2g
參數來解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.