apache-spark - AWS Glue:数据是否偏斜?
问题描述
我在 AWS Glue 中有一份工作失败了:
调用 o567.pyWriteDynamicFrame 时出错。由于阶段故障而中止作业:阶段 31.0 中的任务 168 失败 4 次,最近一次失败:阶段 31.0 中丢失任务 168.3(TID 39474,ip-10-0-32-245.ec2.internal,执行程序 102):ExecutorLostFailure(执行程序 102 因其中一项正在运行的任务而退出)原因:容器因超出内存限制而被 YARN 杀死。使用了 22.2 GB 的 22 GB 物理内存。由于 YARN-4714,请考虑提高 spark.yarn.executor.memoryOverhead 或禁用 yarn.nodemanager.vmem-check-enabled。
主要信息是Container killed by YARN for exceeding memory limits. 22.2 GB of 22 GB physical memory used.
我已经将广播用于小型 dfs 和盐技术用于更大的表。
输入包含要处理的 75GB JSON 文件。
我对输入文件使用了 32MB 的分组:
additional_options={
'groupFiles': 'inPartition',
'groupSize': 1024*1024*32,
},
输出文件写入 256 个分区:
output_df = output_df.coalesce(256)
在 AWS Glue 中,我使用 60 个 G.2X 执行器 = 60 x(8 个 vCPU、32 GB 内存、128 GB 磁盘)启动了该作业。
下面是表示此作业指标的图表。由此看来,数据看起来并没有歪斜……我错了吗?
欢迎任何关于成功运行的建议!
解决方案
尝试使用repartition
而不是coalesce
. 后者将根据您提供的分区数执行完整的执行。在您的情况下,它尝试使用 处理所有输入数据256 partitions
,当它无法处理输入数据量时,您将收到错误消息。
推荐阅读
- android - 在 api 上只模拟一次调用
- ios - 后滑时消失的 UISearchBar
- rspec - Rspec 中嵌套字段的语法
- mysql - 根据 Google 表格中的命名范围中的数据在 Google Cloud SQL 中创建表
- ios - 无法在 iOS 12 上使用 SwiftyJSON 构建项目
- java - 数组存储了太多值
- javascript - 在打字稿编译期间从输出中排除“src”文件夹?
- google-bigquery - 一个 BigQueryOperator 的模板化 destination_dataset_table arg 作为另一个模板化的 From
- java - ReactiveSecurityContextHolder.getContext() 为空,但 @AuthenticationPrincipal 有效
- android - 如何在 Android 应用中保存特定的片段状态