"由于超过内存限制而被YARN杀死的容器"除了我对RDD进行排序的时候。为什么呢?

时间:2017-09-12 19:34:04

标签: apache-spark emr amazon-emr

我正在使用m3.xlarge实例在AWS EMR上运行12节点Spark群集,并且正在尝试处理36GB的gzip压缩CSV数据。当我运行以下代码时,我收到错误:

source_data = spark.read.csv('s3://my-bucket/my_csv_files/',
                             sep='\t', header=True, nullValue='\\N',
                             escape='"', schema=schema)
data = (source_data.rdd.keyBy(lambda x: x['id'])
                       .groupByKey())
  

原因:由于超出内存限制,容器被YARN杀死。使用10.4 GB的10.4 GB物理内存。考虑提升spark.yarn.executor.memoryOverhead。

然而,当我使用sortBy运行相同的代码时,它可以正常工作:

data = (source_data.rdd.keyBy(lambda x: x['id'])
                       .sortBy(lambda x: x[1]['file_timestamp'])
                       .groupByKey())

为什么会这样,我应该如何排除故障?我使用maximizeResourceAllocation运行我的群集,并试图将spark.yarn.executor.memoryOverhead设置为更大的值而没有太多运气。

0 个答案:

没有答案