Apache Spark 主节点 URL 在 Idea IntelliJ 中运行时出错。

8 浏览
0 Comments

Apache Spark 主节点 URL 在 Idea IntelliJ 中运行时出错。

我正在使用Intellij IDEA开发Scala中的Spark应用程序。

我不确定为什么会出现下面的错误。

代码:

package batch
import java.lang.management.ManagementFactory
import org.apache.spark.{SparkConf, SparkContext}
object BatchJob {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
      .setAppName("Lambda with Spark")
    val sc = new SparkContext(conf)
    val sourceFile = "file:///E:/Boxes/data.tsv"
    val input = sc.textFile(sourceFile)
    input.foreach(println)
  }
}

错误:

**Exception in thread "main" org.apache.spark.SparkException: 在配置中必须设置主节点的URL**

0
0 Comments

问题的原因是没有设置Spark的master URL。解决方法是在IDE或本地运行时,应该使用以下方式设置SparkConf对象:

val conf = new SparkConf()
  .setAppName("Lambda with Spark").setMaster(local[*])

对于在集群上运行,可以使用'yarn'作为master。

0
0 Comments

在Intellij中运行Spark时,需要为Spark配置对象设置master参数。代码如下:

val conf = new SparkConf().setAppName("Lambda with Spark").setMaster("local[*]")

这样可以覆盖master配置,以便在从spark-submit命令中调用时使用。请参考我的回答,我认为这是更好的方法。确保在Intellij中运行代码,而不是使用spark-submit命令!我今天测试过,是可以正常工作的。

0
0 Comments

Apache Spark是一个用于大规模数据处理的开源集群计算框架。在使用Apache Spark时,可能会遇到"Apache Spark master URL error running in IDEA IntelliJ"的问题。这个问题的出现原因是之前的答案强制将driver运行在本地,而不是使用Spark submit命令执行该driver。解决这个问题的方法是创建一个默认的配置,并检查是否定义了master。如果没有定义master,则假设是一个本地测试,并强制将master设置为local。具体的解决方法如下:

val SPARK_MASTER = "spark.master"
val DEFAULT_MASTER = "local[*]"
// 获取默认配置
val defaultConf = new SparkConf()
// 如果没有定义master,则设置默认为local
if(!defaultConf.contains(SPARK_MASTER)) defaultConf.setMaster(DEFAULT_MASTER)
val sparkSession = SparkSession.builder().config(defaultConf).getOrCreate()

这样,就可以解决"Apache Spark master URL error running in IDEA IntelliJ"的问题了。

0