如果在PySpark的UDF函数中添加任何类型的日志记录,它都不会出现在任何地方。这是一种制造这种情况的方法吗?
到目前为止,我已经尝试了标准的Python日志记录、py4j和print等方式。
我们正在AWS EMR集群上使用YARN管理器运行PySpark 2.3.2。
例如,这是一个我想要使用的函数:
def parse_data(attr):
try:
# execute something
except Exception as e:
logger.error(e)
return None
我将其转换为UDF:
import pyspark.sql.functions as F
parse_data_udf = F.udf(parse_data, StringType())
我会在一个数据框上使用它:
from pyspark.sql import types as pst
dataframe = dataframe.withColumn("new_column", parse_data_udf("column").cast(pst.StringType())
这个函数的日志不会出现在任何地方。