以下是代码:
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可能包含不良数据,所以我想使用愚蠢的尝试除了处理它,请告诉我排除错误数据的最佳做法。
由于未知原因,我收到了错误:
那么代码有什么问题?它适用于同一环境中的另一个项目,所以我很确定错误不应该来自代码本身。
非常感谢,任何线索都表示赞赏。
答案 0 :(得分:1)
您错过了)
return "2016-08-11 00:00:01".format(
另外,你没有
from pyspark.sql.functions import udf
答案 1 :(得分:1)
缺少括号或括号确实如此常见,我建议你使用文本编辑工具进行双重检查,如果是这样的话。我使用的UltraEdit对我来说很棒。