【问题标题】:New to Spark. - getting java.net.BindException: Cannot assign requested addressSpark 新手。 - 获取 java.net.BindException:无法分配请求的地址
【发布时间】:2016-06-23 23:52:30
【问题描述】:

我是 Spark 的新手。刚刚在我的笔记本电脑(Ubuntu)中安装了 1.6.0 版,并继续使用 phyton 的外壳(pyspark)进行示例。但是,我无法弄清楚这个错误告诉我什么。你能帮忙吗?任何帮助表示赞赏。

>>> lines = sc.textFile("spark-1.6.0/README.md")
>>> lines.count()
Traceback (most recent call last):                                              
  File "<stdin>", line 1, in <module>
  File "/home/ricky/spark-1.6.0/python/pyspark/rdd.py", line 1004, in count
    return self.mapPartitions(lambda i: [sum(1 for _ in i)]).sum()
  File "/home/ricky/spark-1.6.0/python/pyspark/rdd.py", line 995, in sum
    return self.mapPartitions(lambda x: [sum(x)]).fold(0, operator.add)
  File "/home/ricky/spark-1.6.0/python/pyspark/rdd.py", line 869, in fold
    vals = self.mapPartitions(func).collect()
  File "/home/ricky/spark-1.6.0/python/pyspark/rdd.py", line 771, in collect
    port = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
  File "/home/ricky/spark-1.6.0/python/lib/py4j-0.9-    src.zip/py4j/java_gateway.py", line 813, in __call__
  File "/home/ricky/spark-1.6.0/python/pyspark/sql/utils.py", line 45, in   deco
    return f(*a, **kw)
  File "/home/ricky/spark-1.6.0/python/lib/py4j-0.9-   src.zip/py4j/protocol.py", line 308, **in get_return_value**
py4j.protocol.Py4JJavaError: An error occurred while calling     z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: java.net.BindException: Cannot assign requested address
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at     java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
        at java.net.ServerSocket.bind(ServerSocket.java:375)
        at java.net.ServerSocket.<init>(ServerSocket.java:237)
        at     org.apache.spark.api.python.PythonRDD$.serveIterator(PythonRDD.scala:637)
        at    org.apache.spark.api.python.PythonRDD$.collectAndServe(PythonRDD.scala:405)
        at  org.apache.spark.api.python.PythonRDD.collectAndServe(PythonRDD.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 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231)
        at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381)
        at py4j.Gateway.invoke(Gateway.java:259)
        at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
        at py4j.commands.CallCommand.execute(CallCommand.java:79)
        at py4j.GatewayConnection.run(GatewayConnection.java:209)
        at java.lang.Thread.run(Thread.java:745)

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    瑞奇,

    看起来你想弄清楚如何调试问题

    1) 首先进入您的 conf 目录并将 log4j.properties.template 文件复制到 log4j.properties 并在该文件中,将日志级别更改为 DEBUG log4j.rootCategory=DEBUG,控制台并重新启动您的pyspark shell,你应该开始看到更多的调试信息

    2) 在您的代码更改中 行 = sc.textFile("README.md") 行数()

    当我在本地执行这些步骤时,它可以工作,这是我看到的日志 16/03/09 08:16:29 DEBUG BlockManager:获取本地块广播_0 16/03/09 08:16:29 调试 BlockManager:块广播_0 的级别是 StorageLevel(true, true, false, true, 1) 16/03/09 08:16:29 DEBUG BlockManager:从内存中获取块广播_0 16/03/09 08:16:29 调试 HadoopRDD:创建新的 JobConf 并将其缓存以供以后重用 16/03/09 08:16:29 调试:地址:SUNILPATIL.local/10.250.57.78 isLoopbackAddress:false,主机为 10.250.57.78 SUNILPATIL.local 16/03/09 08:16:29 调试 FileInputFormat:获取 FileStatuses 所需的时间:8 16/03/09 08:16:29 INFO FileInputFormat:要处理的总输入路径:1 16/03/09 08:16:29 调试 FileInputFormat:getSplits 生成的拆分总数:2,TimeTaken:15 16/03/09 08:16:29 调试 ClosureCleaner:+++ 清洁关闭(org.apache.spark.rdd.RDD$$anonfun$collect$1$$anonfun$12)+++ 16/03/09 08:16:29 调试 ClosureCleaner:+ 声明字段:2

    Spark 使用 Hadoop IO 读取文件,当 FileInputFormat 启动时,它会尝试连接回本地环回地址。这可能是你的问题。如果不发布详细的堆栈跟踪

    苏尼尔

    【讨论】:

    • 谢谢苏尼尔。我将尝试调试并更新结果。
    • Sunil,你认为我可能需要设置 SPARK_LOCAL_IP 吗?当 pyspark 的 shell 启动时,请查看警告消息。顺便说一句:现在调试已打开(谢谢),我试图发布完整的堆栈错误,但对于这个论坛来说太长了。 :-( 16/03/14 23:31:06 警告实用程序:您的主机名,ubuntu 解析为环回地址:127.0.1.1;使用 192.168.2.227 代替(在接口 enp11s0 上)16/03/14 23:31:06 WARN Utils:如果需要绑定到另一个地址,请设置 SPARK_LOCAL_IP
    • 是的,试一试。您可以在databricks.gitbooks.io/databricks-spark-knowledge-base/content/… 找到更多信息
    • 我不再收到有关环回地址的警告,但不幸的是原始错误仍然存​​在。似乎代码已执行,但最后出现错误 in get_return_value: File "/home/ricky/spark-1.6.0/python/lib/py4j-0.9- src.zip /py4j/protocol.py”,第 308 行,in get_return_value py4j.protocol.Py4JJavaError:调用 z:org.apache.spark.api.python.PythonRDD.collectAndServe 时出错。 : java.net.BindException: 无法分配请求的地址
    • 我会尝试卸载 spark 并重新安装它。
    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多