【发布时间】:2019-11-10 05:59:42
【问题描述】:
我正在尝试在我的代码中添加一些错误处理。我在 aws 胶水作业中运行 pyspark 代码。我想做的是在出现错误时创建一个文本文件,然后将一条短消息和错误写入文本文件。我有一个我在下面尝试过的例子。当我运行 try/except 代码时,它返回一个错误,即没有这样的文件或目录。我想出的解决方法是创建一个动态框架并向其中添加一个列,并将错误消息作为字符串。我不得不认为有一种更简单的方法可以做到这一点。有谁知道更好的方法将错误消息写入文本文件作为胶水 pyspark 中的 try/except 块的一部分?
示例代码:
for i in [1,0,3]:
try:
print(1/i)
except Exception as e:
logf=open('s3://xxxx/error_logs/error_test.log',"a")
logf.write("failed {0}: {1}\n".format(str(i), str(e)))
logf.close()
print(e)
pass
解决写出到 csv 的代码:
log_txt = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://xxxx/error_logs/"] }, format="csv" )
log_txt_df=log_txt.toDF()
log_txt_df=log_txt_df.withColumn('try',lit('test'))
log_txt_df.show()
【问题讨论】:
-
你应该使用 boto3 s3 apis 来访问 s3 而不是 python 文件 apis
标签: python-3.x pyspark aws-glue