【发布时间】:2019-12-27 20:37:04
【问题描述】:
启用 PyArrow 后,Executor 引发的 Pandas UDF 异常将无法捕获:请参见下面的示例。这是预期的行为吗?
如果是这样,原因是什么。如果没有,我该如何解决这个问题?
已确认 PyArrow 0.11 和 0.14.1(最新)以及 PySpark 2.4.0 和 2.4.3 中的行为。 Python 3.6.5。
import pandas as pd
from pyspark.sql import SparkSession
from pyspark.sql.functions import udf
spark = SparkSession.builder.getOrCreate()
# setting this to false will allow the exception to be caught
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
@udf
def disrupt(x):
raise Exception("Test EXCEPTION")
data = spark.createDataFrame(pd.DataFrame({"A": [1, 2, 3]}))
try:
test = data.withColumn("test", disrupt("A")).toPandas()
except:
print("exception caught")
print('end')
我希望广泛的 except 能够捕获每一个异常。
【问题讨论】:
标签: python pyspark user-defined-functions pyarrow