Scala 初始化SparkContext时出错:必须在配置中设置主URL

Scala 初始化SparkContext时出错:必须在配置中设置主URL,scala,apache-spark,k-means,Scala,Apache Spark,K Means,我曾经 我的错误是: Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 17/02/03 20:39:24 INFO SparkContext: Running Spark version 2.1.0 17/02/03 20:39:25 WARN NativeCodeLoader: Unable to load native-hadoop library for your plat

我曾经

我的错误是:

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties

17/02/03 20:39:24 INFO SparkContext: Running Spark version 2.1.0

17/02/03 20:39:25 WARN NativeCodeLoader: Unable to load native-hadoop 
library for your platform... using builtin-java classes where applicable

17/02/03 20:39:25 WARN SparkConf: Detected deprecated memory fraction 
settings: [spark.storage.memoryFraction]. As of Spark 1.6, execution and  
storage memory management are unified. All memory fractions used in the old 
model are now deprecated and no longer read. If you wish to use the old 
memory management, you may explicitly enable `spark.memory.useLegacyMode` 
(not recommended).

17/02/03 20:39:25 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:379)
at PCA$.main(PCA.scala:26)
at PCA.main(PCA.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

17/02/03 20:39:25 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:379)
at PCA$.main(PCA.scala:26)
at PCA.main(PCA.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at   
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

Process finished with exit code 1
使用Spark的默认log4j配置文件:org/apache/Spark/log4j-defaults.properties
17/02/03 20:39:24信息SparkContext:运行Spark版本2.1.0
17/02/03 20:39:25警告NativeCodeLoader:无法加载本机hadoop
您的平台的库。。。在适用的情况下使用内置java类
17/02/03 20:39:25警告SparkConf:检测到不推荐使用的内存部分
设置:[spark.storage.memoryFraction]。自Spark 1.6起,执行和
存储内存管理是统一的。旧版本中使用的所有内存分数
模型现在已弃用,不再读取。如果你想用旧的
内存管理,您可以显式启用'spark.memory.useLegacyMode''
(不推荐)。
17/02/03 20:39:25错误SparkContext:初始化SparkContext时出错。
org.apache.spark.SparkException:必须在您的应用程序中设置主URL
配置
位于org.apache.spark.SparkContext(SparkContext.scala:379)
在PCA$.main(PCA.scala:26)
在PCA.main(PCA.scala)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
17/02/03 20:39:25信息SparkContext:已成功停止SparkContext
线程“main”org.apache.spark.SparkException中的异常:必须在配置中设置主URL
位于org.apache.spark.SparkContext(SparkContext.scala:379)
在PCA$.main(PCA.scala:26)
在PCA.main(PCA.scala)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在
invoke(NativeMethodAccessorImpl.java:62)
在
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.lang.reflect.Method.invoke(Method.java:498)
位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
进程已完成,退出代码为1

错误消息非常清楚,您必须通过
SparkContext
Spark submit
提供Spark主节点的地址:

val conf = 
  new SparkConf()
    .setAppName("ClusterScore")
    .setMaster("spark://172.1.1.1:7077") // <--- This is what's missing
    .set("spark.storage.memoryFraction", "1")

val sc = new SparkContext(conf)
val conf=
新SparkConf()
.setAppName(“ClusterScore”)

.setMaster(“spark://172.1.1.1:7077“”/如果您单独运行spark

val conf = new SparkConf().setMaster("spark://master") //missing 
您可以在提交作业时传递参数

spark-submit --master spark://master
spark-submit --master local
如果您正在运行spark local,则

val conf = new SparkConf().setMaster("local[2]") //missing 
您可以在提交作业时传递参数

spark-submit --master spark://master
spark-submit --master local
如果你是在纱线上运行spark

spark-submit --master yarn

它将工作…

很可能您正在Java中使用Spark 2.x API。 使用这样的代码段可以避免此错误。当您使用Shade插件在计算机上运行Spark standalone时,这是正确的,该插件将导入计算机上的所有运行库

SparkSession spark = SparkSession.builder()
                .appName("Spark-Demo")//assign a name to the spark application
                .master("local[*]") //utilize all the available cores on local
                .getOrCreate();

现在我有另一个关于这个代码的问题:如何输入我的文本。代替“/data/kddcupdatea/kddcup.trasfrom.nou2r”,我想使用保存在“C://kddcup.data\u 10\u percent\u corrected.txt”中的文本文件。请帮我怎么做?@fakherzad你可以使用
file:///kddcup.data_10_percent_corrected.txt
用于读取本地计算机上的文件。感谢s的指导,但我也有一个错误:“输入路径不存在:文件:/kddcup.data\u 10\u percent\u corrected.txt”。我不知道该怎么解决它。plz帮助我找到可能的副本