本地开发Spark,运行JavaSparkPi例子报错:A master URL must be set in your configuration
错误信息:
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
18/08/21 18:39:27 INFO SparkContext: Running Spark version 1.6.0
18/08/21 18:39:28 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 org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:59)
at code.demo.spark.JavaSparkPi.main(JavaSparkPi.java:38)
18/08/21 18:39:28 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>(SparkContext.scala:401)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:59)
at code.demo.spark.JavaSparkPi.main(JavaSparkPi.java:38)
在本地搭建了Spark的开发环境,在运行Spark的JavaSparkPi.java例子的时候报了如上的错误。
错误原因:
没有指定虚拟机的运行参数,找不到运行的master,指定master参数有以下几种
local 本地单线程
local[K] 本地多线程(指定K个内核)
local[*] 本地多线程(指定所有可用内核)
spark://HOST:PORT 连接到指定的 Spark standalone cluster master,需要指定端口。
mesos://HOST:PORT 连接到指定的 Mesos 集群,需要指定端口。
yarn-client客户端模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。
yarn-cluster集群模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。
解决方法一:
配置虚拟机的运行参数。
Eclipse配置方法:
右键程序→Run As→Run Configurations…Arguments
在VM arguments中配置
-Dspark.master=local
解决方法二:
通过SparkConf的setMaster()方法来配置SparkConf的Master为“local”,如下:
SparkConf sparkConf = new SparkConf().setAppName("JavaPageRank").setMaster("local");
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
官网的解释是:
The appName parameter is a name for your application to show on the cluster UI. master is a Spark, Mesos or YARN cluster URL, or a special “local” string to run in local mode. In practice, when running on a cluster, you will not want to hardcode master in the program, but rather launch the application with spark-submit and receive it there. However, for local testing and unit tests, you can pass “local” to run Spark in-process.
翻译:
appName参数是应用程序在集群UI上显示的名称。master参数是一个Spark、Mesos或YARN集群URL,或者是在本地模式下运行的特殊“local”字符串。实际上,在集群上运行时,您不希望在程序中硬编码master,而是使用spark-submit在那里启动应用程序并接收它。但是,对于本地测试和单元测试,您可以通过“local”运行Spark进程中。
上一篇: php简单读取.vcf格式文件的方法示例
下一篇: uniapp-转发功能