Géz*_*yai 5 logging user-defined-functions pyspark
如果您在 PySpark 的 UDF 函数中添加任何类型的登录,它就不会出现在任何地方。是否有某种方法可以实现这一目标?
到目前为止,我尝试了标准的 python 日志记录、py4j 和打印。
我们在 AWS EMR 集群上运行带有 YARN 集群管理器的 PySpark 2.3.2。
例如。这是我想使用的一个函数:
def parse_data(attr):
try:
# execute something
except Exception as e:
logger.error(e)
return None
Run Code Online (Sandbox Code Playgroud)
我将其转换为 UDF:
import pyspark.sql.functions as F
parse_data_udf = F.udf(parse_data, StringType())
Run Code Online (Sandbox Code Playgroud)
我将在数据帧上使用它:
from pyspark.sql import types as pst
dataframe = dataframe.withColumn("new_column", parse_data_udf("column").cast(pst.StringType())
Run Code Online (Sandbox Code Playgroud)
该函数的日志不会出现在任何地方。
小智 0
使用yarn时,您可以使用以下YARN CLI命令来检查容器日志。
这就是 stdout/stderr (以及您在 udf 中记录的内容)可能所在的位置。
yarn logs -applicationId <Application ID> -containerId <Container ID>
Run Code Online (Sandbox Code Playgroud)