我正在尝试在代码中添加一些错误处理。我在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()
答案 0 :(得分:0)
import boto3
error_message = "your error message"
s3_resource = boto3.resource('s3')
s3_resource.Object(bucket, file_key).put(Body=error_message )
每当引发错误时,请将错误保存在对象中并将其写入文件。 这里bucket = s3 bucket名称,而file_key =文件的名称和路径。