【问题标题】:Error creating sparkcontext locally An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext在本地创建 sparkcontext 时出错调用 None.org.apache.spark.api.java.JavaSparkContext 时出错
【发布时间】:2022-01-08 13:30:06
【问题描述】:

我正在尝试在我的 Mac 上本地运行 spark。到目前为止我有这个:

conf = SparkConf().setAppName('test').setMaster('local[*]')
sc = SparkContext(conf=conf)

我知道我确实有 JAVA_HOME(如 /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home)和 SPARK_HOME(如 /Users/myname/spark-3.1.1-amzn-0-bin-3.2.1-amzn-3,这是安装 spark 的位置以及用于 spark-submit 的 bin 所在的位置,我可以在我的终端)正确。我得到了这个:

py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.NoSuchMethodError: io.netty.util.concurrent.SingleThreadEventExecutor.<init>(Lio/netty/util/concurrent/EventExecutorGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V
    at io.netty.channel.SingleThreadEventLoop.<init>(SingleThreadEventLoop.java:65)
    at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:138)
    at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:146)
    at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:37)
    at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
    at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
    at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
    at io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:86)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:81)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:68)
    at org.apache.spark.network.util.NettyUtils.createEventLoop(NettyUtils.java:66)
    at org.apache.spark.network.client.TransportClientFactory.<init>(TransportClientFactory.java:106)
    at org.apache.spark.network.TransportContext.createClientFactory(TransportContext.java:142)
    at org.apache.spark.rpc.netty.NettyRpcEnv.<init>(NettyRpcEnv.scala:77)
    at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:493)
    at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:57)
    at org.apache.spark.SparkEnv$.create(SparkEnv.scala:266)
    at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:189)
    at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:277)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:458)
    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:238)
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.lang.Thread.run(Thread.java:748)

我试图从 PyCharm 中的 python 3.8 venv 运行它以防万一。

我在其他地方看到过类似的错误,但没有看到任何适合我的解决方案:

Getting Py4JavaError:Calling None.org.apache.spark.api.java.JavaSparkContext https://superuser.com/questions/1436855/port-binding-error-in-pyspark PYspark SparkContext Error "error occurred while calling None.org.apache.spark.api.java.JavaSparkContext." py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext Spark2-submit failing with pyspark

想法?

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    我在尝试使用 amazon/aws-glue-libs:glue_libs_2.0.0_image_01 图像时遇到了类似的问题。在我的情况下,问题通过重新安装 pyspark 得到解决。

    java.lang.NoSuchMethodError 提示正在使用的各种依赖版本会导致引发此错误。

    如果您对使用 AWS Glue 的映像感兴趣,请查看由 https://github.com/DNXLabs/docker-glue-libs/blob/master/Dockerfile 提供的 Dockerfile,但从 Dockerfile 中删除 glue-libs 也很容易。然后可以将图像用作 PyCharm 中的远程解释器(例如:https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/

    编辑: 在我的情况下,问题是由使用 aws-glue-libs 时加载的以下 JAR 引起的:

    • aws-glue-libs/jarsv1/javax.servlet-3.*
    • aws-glue-libs/jarsv1/netty-*

    删除这些,问题就消失了

    【讨论】:

      【解决方案2】:

      尝试将 Java 版本更改为 JDK 8。当我的 JAVA_HOME 映射到 JDK 16 时,我遇到了同样的错误。通过将 JAVA_HOME 更改为 JDK 8 来纠正它。

      【讨论】:

        猜你喜欢
        • 2020-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 2019-02-23
        相关资源
        最近更新 更多