为什么我的 pyspark 应用程序因用户定义的函数而失败?
multiplier = udf(lambda x: float(x) * 100.0, FloatType())
df = df.select(multiplier(df['value']).alias('value_percent'))
抛出的错误是
在阶段 1.0 (TID 1) 中丢失任务 0.0(127.0.0.1 执行器驱动程序): org.apache.spark.SparkException:Python 工作线程意外退出
....
java.io.EOFException
但更奇怪的是,相同的代码(具有相同的 UDF 函数和相同的数据集)实际上可以在 jupyter note 上运行。
火花版本:3.5.3
python版本:3.11.9
操作系统:Windows。
请验证,如果 df['value'] 包含字符串或其他无法转换为 float 的数据类型,尝试在 UDF 内进行转换可能会导致错误。