【发布时间】:2020-10-05 17:11:53
【问题描述】:
在尝试java.lang.OutofMemorySpace:Java heap space while fetching 120 million rows from database in pyspark 之后,我刚刚启动了 Amazon Elastic MapReduce 服务器,其中我有 1 个主节点和 2 个从节点运行,每个节点都有 4 个内核和 8G RAM。
我正在尝试从 MySQL 数据库加载一个海量数据集(包含大约 1.2 亿行)。查询加载正常,但是当我执行 df.show() 操作或尝试对 spark 数据帧执行操作时,我收到类似错误 -
org.apache.spark.SparkException: Job 0 cancelled because SparkContext was shut downTask 0 in stage 0.0 failed 1 times; aborting jobjava.lang.OutOfMemoryError: GC overhead limit exceeded
我的问题是 -
- 当我通过 SSH 连接到 Amazon EMR 服务器并执行
htop时,我看到 8GB 中的 5GB 已经在使用中。这是为什么呢? - 在 Amazon EMR 门户上,我可以看到主服务器和从服务器正在运行。我不确定是否正在使用从属服务器,或者它是否只是主服务器在完成所有工作。我必须单独启动或“启动”两个从节点还是 Spark 会自动执行此操作?如果是,我该怎么做?
【问题讨论】:
-
分享更多关于你的代码的细节,以及你如何提交你的代码 spark-submit 或其他?您还可以在 YARN UI 中获取更多详细信息
-
我没有使用 spark-submit。手动运行我的代码的每一行。使用 spark-submit 有什么不同吗?
-
它允许你提交代码到集群,你需要在这里分享你的代码,我认为上下文没有被初始化
-
EMR中有Zeppelin服务,试试看
-
将进行编辑。 〜在描述中添加了一个编辑〜@Rahul
标签: apache-spark pyspark amazon-emr