pyspark提示未定义的udf错误

时间:2016-08-12 02:12:07

标签: exception-handling pyspark

以下是代码:

from py4j.protocol import Py4JJavaError
def parse_clf_time(s):
    try:
    #return "{0:04d}-{1:02d}-{2:02d} {3:02d}:{4:02d}:{5:02d}".format(int(s[7:11]),month_map[s[3:6]],int(s[0:2]),int(s[12:14]),int(s[15:17]),int(s[18:20]))
        return "{0:04d}-{1:02d}-{2:02d} {3:02d}:{4:02d}:{5:02d}".format(
            int(s[7:11]),
            month_map[s[3:6]],
            int(s[0:2]),
            int(s[12:14]),
            int(s[15:17]),
            int(s[18:20])
            )
    except Py4JJavaError as e:
        return "2016-08-11 00:00:01".format(
            int(s[7:11]),
            month_map[s[3:6]],
            int(s[0:2]),
            int(s[12:14]),
            int(s[15:17]),
            int(s[18:20])

u_parse_time = udf(parse_clf_time)

final_df = cleaned_df.select('*', u_parse_time(cleaned_df['timestamp']).cast('timestamp').alias('time')).drop('timestamp')
total_log_entries = final_df.count()

df可能包含不良数据,所以我想使用愚蠢的尝试除了处理它,请告诉我排除错误数据的最佳做法。

由于未知原因,我收到了错误:

enter image description here

那么代码有什么问题?它适用于同一环境中的另一个项目,所以我很确定错误不应该来自代码本身。

非常感谢,任何线索都表示赞赏。

2 个答案:

答案 0 :(得分:1)

您错过了)

return "2016-08-11 00:00:01".format(

另外,你没有

from pyspark.sql.functions import udf

答案 1 :(得分:1)

缺少括号或括号确实如此常见,我建议你使用文本编辑工具进行双重检查,如果是这样的话。我使用的UltraEdit对我来说很棒。