AWS Glue未使用所有执行程序

时间:2019-09-07 03:08:33

标签: apache-spark pyspark aws-glue

我正在使用一些AWS胶水来执行一些ETL操作。我的程序将计算出的数据帧写入S3。当查看指标时,我发现并不是我的所有执行程序都在使用中,实际上只有一个在使用中。 如何确保所有分配的执行人都忙? 谢谢。 我不在程序中仅使用原生的sparkcontext

2 个答案:

答案 0 :(得分:0)

不使用胶水上下文可能是使用一个执行程序的原因之一。

https://docs.aws.amazon.com/glue/latest/dg/monitor-profile-debug-straggler.html

特别阅读内存配置文件部分:

  

在前两个阶段之后,只有执行者3处于活动状态   消耗内存来处理数据。剩下的执行者是   只是闲着,或者在完成后不久就被放弃了   前两个阶段。

答案 1 :(得分:0)

我发现我的工作没有使用所有的执行程序,尽管有很多数据要处理。问题出在我的 SparkContext 上的设置中。我正在使用 // editACommand.B_Ids is cmd object with the ids of the B collection that need to bechanged. var AEntity = DbContext.As.Include<Bs>.AsQuerable(); var resultBRemove = AEnitity.Bs.Where(p => editACommand.B_Ids != null && editACommand.B_Ids.All(p2 => p2 != p.Id)).ToList(); var resultBAdd = editACommand.SB_Ids.Where(p => AEnitity.Bs.Count > 0 && AEnitity.Bs.All(p2 => p2.Id != p)).ToList(); foreach (var resultBRemoveItem in resultBRemove ) { AEnitity.Bs.Remove(resultBRemoveItem ); } foreach (var resultBAddItem in resultBAdd ) { var item = DBContext.AEnitity.SingleOrDefault(i => i.Id == resultBAddItem ); if (item != null) { AEnitity.Bs.Add(item); } } DbContext.SaveChanges(); ,我相信它使作业仅在一个执行程序(驱动程序)上运行。如果这对您的问题或其他面临相同问题的人有帮助。