繁体   English   中英

在IntelliJ Idea中运行Apache Spark示例应用程序

[英]Running Apache Spark Example Application in IntelliJ Idea

我试图在Netbeans中运行SparkPi.scala示例程序。 不幸的是,我对Spark很新,并且无法成功执行它。

我的偏好是只在Netbeans中工作并从那里执行。 我知道火花也允许从火花控制台执行 - 但我不喜欢采取这种方法。

这是我的build.sbt文件内容:

name := "SBTScalaSparkPi"

version := "1.0"

scalaVersion := "2.10.6"

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"

这是我的plugins.sbt文件内容:

logLevel := Level.Warn

这是我试图执行的程序:

import scala.math.random

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf

/** Computes an approximation to pi */
object SparkPi {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("Spark Pi")
    val spark = new SparkContext(conf)
    val slices = if (args.length > 0) args(0).toInt else 2
    val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
    val count = spark.parallelize(1 until n, slices).map { i =>
        val x = random * 2 - 1
        val y = random * 2 - 1
        if (x*x + y*y < 1) 1 else 0
      }.reduce(_ + _)
    println("Pi is roughly " + 4.0 * count / n)
    spark.stop()
  }
}

JDK版本:1.8。

我在尝试执行代码时得到的错误如下:

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
16/03/25 07:50:25 INFO SparkContext: Running Spark version 1.6.1
16/03/25 07:50:26 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/03/25 07:50:26 ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: A master URL must be set in your configuration
at org.apache.spark.SparkContext.<init>(SparkContext.scala:401)
at SparkPi.main(SparkPi.scala)
16/03/25 07:50:26 INFO SparkContext: Successfully stopped SparkContext
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
at org.apache.spark.SparkContext.<init>
at SparkPi$.main(SparkPi.scala:28)
at SparkPi.main(SparkPi.scala)
Process finished with exit code 1

在此先感谢您的帮助。

必须在配置中设置主URL

您必须在spark.master中设置spark.master。 您必须设置两个必需参数 - 您已设置的主控和AppName。 有关更多详细信息,请参阅文档中的初始化Spark部分

你应该使用哪位大师? 有关所有选项,请参阅主URL部分。 最简单的测试选项是local ,它在本地计算机上运行整个Spark系统(驱动程序,主服务器,工作程序),无需额外配置。

要通过Scala API设置主服务器:

val conf = new SparkConf().setAppName("Spark Pi").setMaster("local")
val spark = new SparkContext(conf)

程序的开头只缺少指向Spark主端点的URL。 您可以在InteliJ中将其指定为命令行参数。 主URL是运行群集的Spark主服务器的URL和端口。 示例命令行参数如下所示:

-Dspark.master=spark://myhost:7077

有关详细信息,请参阅此问题的答案: 如何从命令行设置Spark示例的主地址

也许对于您的第一次运行,您只想启动本地Spark独立环境。 如何运行如下所示: http//spark.apache.org/docs/latest/spark-standalone.html

如果你有这个运行,你可以像这样设置你的spark master配置:

-Dspark.master=spark://localhost:7077

需要设置主URL。 使用setMaster(“local”)函数/方法解决了这个问题。

val conf = new SparkConf().setAppName("Spark Pi").setMaster("local")
val spark = new SparkContext(conf)

事实上,@ Matthias和@Tzach都是对的。 您应该根据对您来说更容易的方式选择您的解决方案(现在可能更喜欢第一个选项)。 一旦你开始在一个真正的集群上运行你的火花作业,最好不对“master”参数进行硬编码,这样你就可以在多种集群模式下运行你的火花作业(YARN,Mesos,Standalone with spark-submit )使用Netbeans让它在本地运行(-Dspark.master = local [*])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM