首页 > 解决方案 > Azure 上的 Spark 堆空间和简单电子邮件

问题描述

我正在使用 IntelliJ 和 Scala 来编写 Spark 作业。

我有一个对象。当我在本地机器上运行它时,我收到关于 Java 堆大小的错误。我进入 IntelliJ 设置,我可以添加更多空间。

此后,我在 Azure 上创建了一个 Spark 2.2 集群。

当我通过 IntelliJ 将作业提交到 Azure 时,出现两个在本地运行时不存在的错误

1

YARN Diagnostics: User class threw exception: java.lang.OutOfMemoryError: Java heap space

如何在 Azure 上的 Spark 上设置 Java 堆空间?

2

YARN Diagnostics: User class threw exception: java.lang.NoClassDefFoundError: 
org/apache/commons/mail/DefaultAuthenticator

我相信问题出在这行代码上:

val email = new SimpleEmail
email.setHostName("smtp.googlemail.com")

email.setSmtpPort(465)
email.setAuthenticator(new DefaultAuthenticator("MY EMAIL Address", "MyPassword"))

如何从 Azure 上的 Spark 发送电子邮件?此代码在本地运行良好。我需要做什么才能使它正常工作?

标签: azurescalaapache-sparkemailheap-memory

解决方案


如何在 Azure 上的 Spark 上设置 Java 堆空间?

NameNode Java 堆大小取决于许多因素,例如集群的负载、文件的数量和块的数量。1 GB 的默认大小适用于大多数集群,尽管某些工作负载可能需要更多或更少的内存。

修改NameNode Java 堆大小

HDFS => 配置 => 高级 => NameNode Java 堆大小 = 2048 MB => 保存

修改 YARN Java 堆大小。

YARN => 配置 => 高级 => ResourceManager Java 堆大小 = 2048 MB => 保存

如何从 Azure 上的 Spark 发送电子邮件?此代码在本地运行良好。我需要做什么才能使它正常工作?

您可以参考解决类似问题的SO线程中概述的建议。


推荐阅读