将胶水pypspark错误写入文本文件

问题描述 投票:0回答:1

我正在尝试在代码中添加一些错误处理。我在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()
python-3.x pyspark aws-glue
1个回答
0
投票
import boto3

s3_resource = boto3.resource('s3')
s3_resource.Object(bucket, file_key).put(Body="your error message")
© www.soinside.com 2019 - 2024. All rights reserved.