python - python : java. lang.reflect.InaccessibleObjectException 上的 Apache-Spark 错误

标签 python apache-spark pyspark

这是我第一次将 Apache-Spark 与 python (pyspark) 结合使用,我尝试运行 Quick Start Examples ,但是当我运行这条线时说:

>>> textFile = spark.read.text("README.md")

它给了我以下错误(我只粘贴了第一部分,因为我认为它是最重要的):

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/daniele/Scaricati/spark/python/pyspark/sql/readwriter.py", line 311, in text
    return self._df(self._jreader.text(self._spark._sc._jvm.PythonUtils.toSeq(paths)))
  File "/home/daniele/Scaricati/spark/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__
  File "/home/daniele/Scaricati/spark/python/pyspark/sql/utils.py", line 63, in deco
return f(*a, **kw)
  File "/home/daniele/Scaricati/spark/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py", line 319, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o22.text.
: java.lang.reflect.InaccessibleObjectException: Unable to make field private transient java.lang.String java.net.URI.scheme accessible: module java.base does not "opens java.net" to unnamed module @779d0812
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:335)

有人可以帮我解决这个问题吗? 对不起,如果我的帖子不是那么清楚,但这是这个论坛上的第一篇。 感谢所有愿意提供帮助的人, 丹妮尔。

最佳答案

问题是您的spark 版本和java 版本不兼容。为了解决这个问题,您必须执行以下操作:

  1. 检查您的 PySpark 版本:

    pyspark

  2. 检查您的 PySpark 版本需要哪个 Java 版本(例如,对于 PySpark 2.4.6,我们需要 Java 8 - https://spark.apache.org/docs/2.4.6/)

  3. 检查您安装的可用 Java 版本

    /usr/libexec/java_home -V

  4. 如果您的 Java 版本不可用,请安装它(例如 brew install adoptopenjdk8)

  5. 更改您的 JAVA_HOME 以指向正确的版本。示例:

    export JAVA_HOME="/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"

  6. 确认版本java -version

在此之后,您应该能够按要求执行您的功能

textFile = spark.read.text("README.md")
textFile.show()

关于python - python : java. lang.reflect.InaccessibleObjectException 上的 Apache-Spark 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167891/

相关文章:

apache-spark - 在 Pyspark 中将 bool 值转换为字符串时使用 when 和 else

sql - 在 spark 中选择新列作为空字符串

apache-spark - 即使使用 PySpark 存在表,如何写入 Microsoft SQL Server 表

python - Databricks - Pyspark - 使用动态键处理嵌套的 json

python - Tensorflow:我的准确性出现问题

python - 当文件夹名称中有空格时使用 `os.path.exists` ?

python - 使用 Flask 在本地主机中创建一个 Web 服务器

python - PySpark 将数据帧中数组中的元素映射到另一个数据帧

python - 使用字典计算文件中的单词数不起作用

python - 如何在保留现有架构的同时创建行外的 DataFrame?