我有一个火花应用程序,用于频繁项目集。首先,我得到所有不同的项目,然后配对。 项目数量相当大,我使用m4.Xlarge实例,内存为30 GB。
l = l.map(lambda x:(x[1])).distinct()
lbroadcast = spark.broadcast(l.collect())
x = spark.parallelize(itertools.combinations(l.collect(),2)).filter(lambda x:randomTest(x,lbroadcast))
print x.collect()
第158行的作业3是x,进行配对并过滤广播中的对。最后的打印语句不打印任何内容。 相同的代码在本地计算机上运行,但不在EMR实例上运行。 我认为这可能是RDD内存的一个问题。所有元组都存储在广播变量中。
16/12/03 19:24:26 INFO YarnScheduler:从池中删除任务已完成的TaskSet 18.0
16/12/03 19:24:26 INFO DAGScheduler:ResultStage 18(收集于/home/hadoop/t.py:158)于0.971秒完成
16/12/03 19:24:26 INFO DAGScheduler:作业3完成:收集于/home/hadoop/t.py:158,花了1.039357 s
16/12/03 19:24:28 INFO YarnClientSchedulerBackend:要求杀死遗嘱执行人7
16/12/03 19:24:28 INFO ExecutorAllocationManager:删除执行程序7,因为它已空闲60秒(新的所需总数将为8)
16/12/03 19:24:32 INFO YarnSchedulerBackend $ YarnDriverEndpoint:禁用执行者7。
16/12/03 19:24:32 INFO DAGScheduler:执行官丢失:7(第4纪录)
16/12/03 19:24:32 INFO BlockManagerMasterEndpoint:尝试从BlockManagerMaster中删除执行程序7。