在独立集群上运行 spark 时出错

Posted

技术标签:

【中文标题】在独立集群上运行 spark 时出错【英文标题】:Error while running spark on standalone cluster 【发布时间】:2018-01-07 11:36:53 【问题描述】:

我正在尝试在独立集群上运行一个简单的 Spark 代码。下面是代码:

from pyspark import SparkConf,SparkContext

if __name__ == "__main__":
    conf = SparkConf().setAppName("even-numbers").setMaster("spark://sumit-Inspiron-N5110:7077")
    sc = SparkContext(conf)
    inp = sc.parallelize([1,2,3,4,5])
    even = inp.filter(lambda x: (x % 2 == 0)).collect()
    for i in even:
        print(i)

但是,我收到错误消息“无法解析主 URL”:

py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: org.apache.spark.SparkException: Could not parse Master URL: '<pyspark.conf.SparkConf object at 0x7fb27e864850>'
    at org.apache.spark.SparkContext$.org$apache$spark$SparkContext$$createTaskScheduler(SparkContext.scala:2760)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:501)
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
    at py4j.Gateway.invoke(Gateway.java:236)
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
    at py4j.GatewayConnection.run(GatewayConnection.java:214)
    at java.lang.Thread.run(Thread.java:748)

18/01/07 16:59:47 INFO ShutdownHookManager: Shutdown hook called
18/01/07 16:59:47 INFO ShutdownHookManager: Deleting directory /tmp/spark-0d71782f-617f-44b1-9593-b9cd9267757e

我也尝试将主服务器设置为“本地”,但没有成功。有人可以帮忙吗?

是的,运行作业的命令是

./bin/spark-submit even.py

【问题讨论】:

【参考方案1】:

替换下一行

sc = SparkContext(conf)

sc = SparkContext(conf=conf)

你应该已经解决了。

【讨论】:

我猜在 Spark 2.2 中,(conf=conf) 已成为强制语法。我记得, sc = SparkContext(conf) 曾与早期版本一起使用。非常感谢!

以上是关于在独立集群上运行 spark 时出错的主要内容,如果未能解决你的问题,请参考以下文章

Spark 独立集群 - 从站未连接到主站

Spark集群管理器介绍

Spark 独立集群如何在工作节点上管理多个执行程序?

在集群上运行Spark

Spark 独立集群轮胎访问本地 python.exe

如何在现有的 Apache Spark 独立集群上安装 Apache Zeppelin