15

我正在用 intelliJ 学习 spark + scala,从下面的一小段代码开始

import org.apache.spark.{SparkConf, SparkContext}

object ActionsTransformations {

  def main(args: Array[String]): Unit = {
    //Create a SparkContext to initialize Spark
    val conf = new SparkConf()
    conf.setMaster("local")
    conf.setAppName("Word Count")
    val sc = new SparkContext(conf)

    val numbersList = sc.parallelize(1.to(10000).toList)

    println(numbersList)
  }

}

尝试运行时,低于异常

Exception in thread "main" java.net.BindException: Can't assign requested address: Service 'sparkDriver' failed after 16 retries (on a random free port)! Consider explicitly setting the appropriate binding address for the service 'sparkDriver' (for example spark.driver.bindAddress for SparkDriver) to the correct binding address.
    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 io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:127)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:501)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1218)
    at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:496)
    at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:481)
    at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:965)
    at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:210)
    at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:353)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:399)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
    at java.lang.Thread.run(Thread.java:745)

Process finished with exit code 1

任何人都可以建议做什么。

4

8 回答 8

21

在 spark/bin 目录下的 load-spark-env.sh 文件中添加 SPARK_LOCAL_IP

导出 SPARK_LOCAL_IP="127.0.0.1"

于 2020-07-28T03:49:40.683 回答
17

好像您使用了一些旧版本的火花。在你的情况下尝试添加这一行:

conf.set("spark.driver.bindAddress", "127.0.0.1")

如果您将使用 spark 2.0+,则以下内容应该可以解决问题:

val spark: SparkSession = SparkSession.builder()
.appName("Word Count")
.master("local[*]")
.config("spark.driver.bindAddress", "127.0.0.1")
.getOrCreate()
于 2019-12-18T12:08:52.353 回答
10

有时问题与连接的 VPN 或类似的东西有关!只需断开您的 VPN 或任何其他可能影响您的网络的工具,然后重试。

于 2021-01-27T13:05:46.770 回答
5

以下应该可以解决问题:

sudo hostname -s 127.0.0.1
于 2021-08-03T13:56:34.410 回答
0

这对我来说适用于 pySpark 的相同错误:

from pyspark import SparkContext, SparkConf
conf_spark = SparkConf().set("spark.driver.host", "127.0.0.1")
sc = SparkContext(conf=conf_spark)
于 2020-10-16T07:54:10.827 回答
0

spark试图绑定的端口似乎已经在使用中。成功运行 spark 几次后是否开始出现此问题?您可能想检查那些先前运行的火花进程是否仍然存在,并且是否保留了一些端口(一个简单的jps/ps -ef应该告诉您)。如果是,请终止这些进程并重试。

于 2018-09-02T11:42:37.853 回答
0

我认为setMastersetAppName将返回一个新SparkConf对象,并且该行conf.setMaster("local")不会影响conf变量。所以你应该尝试:

val conf = new SparkConf()
    .setMaster("local[*]")
    .setAppName("Word Count")
于 2018-09-02T07:23:55.623 回答
0

将您的主机名与您的内部 IP 添加到/etc/hosts

更多解释

使用以下命令获取您的主机名:

hostname
# OR
cat /proc/sys/kernel/hostname

使用以下命令获取您的内部 IP:

ip a

更改值并将其添加到/etc/hosts

${INTERNAL_IP} ${HOSTNAME}

例子:

192.168.1.5 bashiri_pc

或者(上一行更好!)

127.0.0.1 bashiri_pc

于 2021-09-19T08:28:18.287 回答