当前位置: 首页 > 知识库问答 >
问题:

PySparkjava.lang.异常引起的错误:java.lang.StringIndexOutOfBoundsExctive

谭嘉容
2023-03-14

我按照这些说明,并在我的机器上安装了Apache Spark(PySpark)2.3.1,其规格如下:

  • Ubuntu 18.04

当我通过从shell调用pyspark或通过直接在我的应用程序中创建会话来间接创建Spark会话时:

spark = pyspark.sql.SparkSession.builder.appName('test').getOrCreate()

我得到以下例外:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
    at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611)
    at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273)
....
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end 3, length 2
    at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3107)
    at java.base/java.lang.String.substring(String.java:1873)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:52)
    ... 22 more
Traceback (most recent call last):
  File "/home/welshamy/tools/anaconda3/lib/python3.6/site-packages/pyspark/python/pyspark/shell.py", line 38, in <module>
    SparkContext._ensure_initialized()
  File "/home/welshamy/tools/anaconda3/lib/python3.6/site-packages/pyspark/context.py", line 292, in _ensure_initialized
    SparkContext._gateway = gateway or launch_gateway(conf)
  File "/home/welshamy/tools/anaconda3/lib/python3.6/site-packages/pyspark/java_gateway.py", line 93, in launch_gateway
    raise Exception("Java gateway process exited before sending its port number")
Exception: Java gateway process exited before sending its port number

如果我使用Jupyter笔记本,我也会在笔记本中得到这个异常:

Exception: Java gateway process exited before sending the driver its port number

我找到并遵循的所有解决方案[1,2,3]都指向环境变量定义,但没有一个对我有用。

共有1个答案

卫英悟
2023-03-14

PySpark 2.3.1不支持JDK 10。您需要安装JDK 8并将JAVA_HOME环境变量设置为指向它。

如果你正在使用Ubuntu(或*nix):

>

  • 安装JDK 8

    sudo apt-get install openjdk-8-jdk
    

    将以下行添加~/。bashrc文件:

    export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
    

    在Windows下,安装JDK 8并设置JAVA_HOME

  •  类似资料:
    • 目录表 错误 try..except 处理异常 引发异常 如何引发异常 try..finally 使用finally 概括 当你的程序中出现某些 异常的 状况的时候,异常就发生了。例如,当你想要读某个文件的时候,而那个文件不存在。或者在程序运行的时候,你不小心把它删除了。上述这些情况可以使用异常来处理。 假如你的程序中有一些无效的语句,会怎么样呢?Python会引发并告诉你那里有一个错误,从而处理

    • 测试检查的代码中抛出的两个异常示例: 使用上述代码,当运行测试时,任何都会通过,但任何需要类提供响应的测试都会产生以下错误: EntityNotFoundException-失败 测试:

    • 我已经为发送电子邮件编写了自己的代码点火器模型。直到最近我开始出现这个错误,一切都很好: 致命错误:无法在/home/mysite/public\u html/subdir/application/libraries/phpmailer/class中重新声明类phpmailerException。phpmailer。php在线2319 我正在使用: 代码点火器2 PHP点火器5.1 我尝试了以下方

    • 忽略on_member_remove Traceback中的异常(最近一次调用为last):文件“C:\Users\Filbert\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\discord\clie

    • 原因:异常[EclipseLink-6076](Eclipse持久性服务-2.5.0.v20130507-3faac2b):org。日食坚持不懈。例外。QueryException异常描述:对象比较只能用于OneToOneMappings。其他映射比较必须通过查询键或直接属性级比较来完成。映射:[org.eclipse.persistence.mappings.DirectToFieldMappi

    • 我是Spring的新人。我学习,但在学习过程中我出错了。我为Spring使用基于XML的配置,这里是编译错误: 线程“main”org . spring framework . beans . factory . beancreationexception中出现异常:创建在类路径资源[Beans.xml]中定义的名为“helloGeorgia”的bean时出错:设置属性值时出错;嵌套异常为org