PySpark失败,退出代码为52

时间:2018-03-26 21:07:59

标签: amazon-web-services apache-spark pyspark amazon-emr spark-submit

我正在运行Amazon EMR集群,我使用spark-submit shell命令向其提交作业。

我称之为:

spark-submit --master yarn --driver-memory 10g convert.py

convert.py脚本使用PySpark和Python 3.4一起运行。 在将文本文件读入RDD后,调用.take(5),。first(),。collect()等任何方法或从RDD创建数据帧会导致以下错误:

  

18/03/26 20:17:53 WARN TaskSetManager:阶段0.0中丢失的任务0.3(TID   3,ip-xx-xx-xx-xxx.ec2.internal,executor 4):ExecutorLostFailure   (执行者4退出由其中一个正在运行的任务引起)原因:   标记为失败的容器:container_0000000000001_0001_01_000001开启   主持人:ip-xx-xx-xx-xxx.ec2.internal。退出状态:52。诊断:   容器启动的例外情况。容器ID:   container_0000000000001_0001_01_000001退出代码:52堆栈跟踪:   ExitCodeException exitCode = 52:at   org.apache.hadoop.util.Shell.runCommand(Shell.java:972)at   org.apache.hadoop.util.Shell.run(Shell.java:869)at   org.apache.hadoop.util.Shell $ ShellCommandExecutor.execute(Shell.java:1170)     在   org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:236)     在   org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:305)     在   org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:84)     在java.util.concurrent.FutureTask.run(FutureTask.java:266)at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:624)     在java.lang.Thread.run(Thread.java:748)

仅适用于一个特定文件(大小约为900MB)。我设法通过仅使用 pyspark shell来复制问题。 有趣的是,使用 spark-shell 程序在scala中执行相同的步骤非常有效。

这可能是YARN的问题吗?此外,内存不应该是一个问题,因为我能够使用相同的代码转换18GB文件。

非常感谢任何指导。

0 个答案:

没有答案