Python 3.x 如何从PySpark UDF中引发的Py4JJavaError中获取原始Python错误

Python 3.x 如何从PySpark UDF中引发的Py4JJavaError中获取原始Python错误,python-3.x,pyspark,pyspark-sql,py4j,Python 3.x,Pyspark,Pyspark Sql,Py4j,我正在使用PySpark UDF在Spark worker上执行代码。如果在UDF中引发异常,则该异常将包装在Py4JJavaError中,并在Python中重新引发。为了正确处理错误,我需要原始错误。有没有办法从Py4JJavaError获取它 原始错误的字符串表示形式作为堆栈跟踪的一部分打印,因此通过解析跟踪至少可以获得错误类型。然而,这将是乏味和容易出错的 将熊猫作为pd导入 从pyspark.sql导入SparkSession 从pyspark.sql.functions导入udf sp

我正在使用PySpark UDF在Spark worker上执行代码。如果在UDF中引发异常,则该异常将包装在
Py4JJavaError
中,并在Python中重新引发。为了正确处理错误,我需要原始错误。有没有办法从
Py4JJavaError
获取它

原始错误的字符串表示形式作为堆栈跟踪的一部分打印,因此通过解析跟踪至少可以获得错误类型。然而,这将是乏味和容易出错的

将熊猫作为pd导入
从pyspark.sql导入SparkSession
从pyspark.sql.functions导入udf
spark=SparkSession.builder.getOrCreate()
df=spark.createDataFrame(pd.DataFrame({“A”:[1,2,3]}))
@自由民主党
def测试(x):
raise VALUERROR(f“Got{x}”)
df=df.带列(“B”,测试(“A”))
df.show()
我希望能够提取最初引发的错误,或者至少提取错误名称和/或错误消息,而无需解析堆栈跟踪