异常:ERROR SparkContext - 本地SparkContext初始化错误。java.net.BindException

4

我正在尝试为Spark应用程序编写测试,但在运行下一个测试时遇到了这个异常。

     class BasicIT {

      val sparkConf: SparkConf = new SparkConf().setAppName("basic.phase.it").setMaster("local[1]")
      var context:SparkContext = new SparkContext(sparkConf)
    @Test
    def myTest(): Unit = {
      print("test")
     }
    }

出现以下异常:

2016-07-24 21:04:39,956 [main,95] ERROR SparkContext - Error initializing SparkContext.
java.net.BindException: Can't assign requested address: Service 'sparkDriver' failed after 16 retries!
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:433)
    at sun.nio.ch.Net.bind(Net.java:425)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:125)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:485)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1089)
    at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:430)
    at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:415)
    at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:903)
    at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:198)
    at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:348)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
    at java.lang.Thread.run(Thread.java:745)

java.net.BindException: Can't assign requested address: Service 'sparkDriver' failed after 16 retries!

我目前在 OS x Yosemite 上使用 IntelliJ 进行工作。

我做错了什么?之前同样的代码可以正常运行...

3个回答

4
尝试使用将export SPARK_LOCAL_IP="127.0.0.1"添加到load-spark-env.sh文件中,或者在运行Spark应用程序之前设置SPARK_LOCAL_IP="127.0.0.1"。这对我有效。

1
是的,这就是答案,我已经将它添加到Spark配置中了,谢谢! - apolak

2

试着将 spark.driver.host 设置为你的本地地址

SparkConf conf = new SparkConf().setMaster("local[2]").setAppName("AnyName").set("spark.driver.host", "localhost");

为我工作。对于SparkSession: val spark = SparkSession .builder() .appName("spark2") .master("local") .config("spark.driver.host","localhost") .getOrCreate(); - Shuai Liu

0

你可能有更多的日志告诉你,配置文件指定的UI端口已经被使用。如果是这种情况,你需要将 spark.ui.port 明确地设置为一些你知道在主节点上可用的端口值。当一个特定的端口不可用时,Spark 会尝试递增端口号。

示例:

val sparkConf = new SparkConf().setAppName("basic.phase.it")
                               .setMaster("local[1]")
                               .set("spark.ui.port", "4080");

对我没用,我需要设置其他参数吗? - apolak
“没用”不够具体。你在日志中看到了什么? - Dici
这是致命异常,但我相信你有更多的日志记录,因为它已经重试了16次。 - Dici
1
请参考链接。这里提供了许多类似问题的尝试选项。 - Ranjan Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接