我正在使用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
设置为更大的值而没有太多运气。