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

Pyspark在尝试使用udf时抛出IllegalArgumentException:“不受支持的类文件主版本55”

邢洋
2023-03-14

我在Pyspark中使用UDF时遇到以下问题。

只要我不使用任何UDF,我的代码就能正常工作。执行简单的操作(如选择列)或使用sql函数(如concat)都没有问题。只要我对使用udf数据帧执行操作,程序就会崩溃,并出现以下异常:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/Users/szymonk/Desktop/Projects/SparkTest/venv/lib/python2.7/site-packages/pyspark/jars/spark-unsafe_2.11-2.4.3.jar) to method java.nio.Bits.unaligned()
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
19/06/05 09:24:37 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Traceback (most recent call last):
  File "/Users/szymonk/Desktop/Projects/SparkTest/Application.py", line 59, in <module>
    transformations.select(udf_example(col("gender")).alias("udf_example")).show()
  File "/Users/szymonk/Desktop/Projects/SparkTest/venv/lib/python2.7/site-packages/pyspark/sql/dataframe.py", line 378, in show
    print(self._jdf.showString(n, 20, vertical))
  File "/Users/szymonk/Desktop/Projects/SparkTest/venv/lib/python2.7/site-packages/py4j/java_gateway.py", line 1257, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/Users/szymonk/Desktop/Projects/SparkTest/venv/lib/python2.7/site-packages/pyspark/sql/utils.py", line 79, in deco
    raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.IllegalArgumentException: u'Unsupported class file major version 55'

我的代码里没有什么花哨的东西。我只是定义了一个简单的udf函数,它应该返回列“gender”中的一系列值。

from pprint import pprint
from pyspark.sql import SparkSession, Column
from pyspark.sql.functions import col, lit, struct, array, udf, concat, trim, when
from pyspark.sql.types import IntegerType

transformations = spark.read.csv("Resources/PersonalData.csv", header=True)

udf_example = udf(lambda x: len(x))
transformations.select(udf_example(col("gender")).alias("udf_example")).show()

我不确定这是否重要,但我在Mac上使用Pycharm。

共有1个答案

郭浩穰
2023-03-14

我找到了解决方案,我不得不切换Pycharm的引导jdk(2xShift->JDK->select jdk 1.8)

 类似资料:
  • 运行时遇到错误,我尝试了Pyspark error-Unsupported class file major version 55和Pyspark.topandas():'Unsupported class file major version 55'中提到的解决方案,但没有成功。 完整错误日志:

  • 我正在Pycharm中运行一个简单的pyspark python脚本,这是一个anaconda环境,带有python 3.7(pyspark版本2.4.4)。我得到了错误:。 我可以看到第二个选择是1.8但没有anaconda插件,所以我不确定现在该怎么做,因为我不想搞乱我的设置,也许有人能帮助我请?多谢!

  • 我正在将我的项目从jdk1.8切换到openjdk 17。代码工作正常,ANT可以生成可执行jar。使用Eclipse IDE。 尝试使用yGuard 3.0.0(通过ant)进行混淆时出现问题。任务是: 输出为: [收缩]错误:不支持的类文件主要版本61[收缩]不支持的类文件主要版本61 我知道61意味着java 17,所以我尝试将工作区符合性更改为“编译器符合性级别”-

  • 我正在编译一个针对java版本6的jar文件,但是我遇到了一个与不支持的专业相关的错误。次要版本51.0。在阅读了几篇文章之后,比如如何修复java。lang.UnsupportedClassVersionError:不支持的专业。次要版本我无法解决我的问题,并采取极端措施试图隔离问题,如下所述。 我创建了一个java沙盒项目,其目的是测试Xerces For Android jar,这是我从源代

  • 当我构建我的应用程序时,我得到了以下错误。任何帮助都将不胜感激。 根:生成。格拉德尔 settings.gradle 应用程序:生成。格拉德尔 失败:生成失败,出现异常*其中:设置文件“/Users/Documents/android/MyApplication5/Settings。gradle“*出了什么问题:无法编译设置文件”//Users/anand/Documents/android/My

  • 我正在尝试运行一个颤振应用程序,在尝试时出现了这个错误,我所做的是我想在没有android studio的情况下运行颤振应用程序,所以我下载了android SDK和JDK 17,在我运行颤振医生后,它告诉我一切都很好,我尝试运行,它给了我这个错误: 所以我尝试了一个旧版本的JDK,它给了我另一个错误,所以我看到了使用JDK 17运行的第三个解决方案,那就是降级gradle中的gradle。属性,