Python 在pyspark中使用S3a保存文件时获取S3响应代码(仅HTTP代码,如200300400403500等)

Python 在pyspark中使用S3a保存文件时获取S3响应代码(仅HTTP代码,如200300400403500等),python,amazon-web-services,amazon-s3,pyspark,apache-spark-sql,Python,Amazon Web Services,Amazon S3,Pyspark,Apache Spark Sql,我正在尝试获取HTTP代码并将其存储在RDS表中,以便稍后分析pyspark作业,该作业将使用S3a将文件以AVRO格式保存到S3。一旦文件被保存,我知道会有来自S3的返回状态代码,但我不知道如何在代码中记录。请查找代码片段 def s3_load(df, row): df.write.\ format("com.databricks.spark.avro").\ save("s3a://Test-" + row["PARTNER"].lower() + "/

我正在尝试获取HTTP代码并将其存储在RDS表中,以便稍后分析pyspark作业,该作业将使用S3a将文件以AVRO格式保存到S3。一旦文件被保存,我知道会有来自S3的返回状态代码,但我不知道如何在代码中记录。请查找代码片段

def s3_load(df, row):
    df.write.\
       format("com.databricks.spark.avro").\
       save("s3a://Test-" + row["PARTNER"].lower() + "/" + row["TABLE_NAME"] + "/" +
            datetime.datetime.today().strftime('%Y%m%d'))
在上面的代码中,我希望o获得返回状态代码。 注意:我可以将该文件以AVRO格式保存在S3中


谢谢

这是本问题中讨论的类似概念,获取封装s3 API的库或函数的状态代码:


最终,如果databricks是处理上传的库,那么
df.write.save(…)
函数调用的结果代码将在databricks函数调用的结果中的某个地方找到

Databricks支持将
s3
s3a
作为保存文件()的目标目标,但Databricks似乎没有从底层操作中显示响应代码(可能是这样,我在任何文档中都找不到)

前进的几个选项:

  • 假设Datatricks会为该上传抛出“某种”错误,那么一个简单的
    try
    /
    除外将允许您正确捕获该错误(尽管任何非Datatricks级别的错误仍然会通过)

  • 在AWS上,s3 bucket uploads是一个事件源,可以用作其他操作(如调用AWS Lambda)的触发器,您可以使用它调用任意云托管函数。网上有很多信息

  • 根据并行上传的需要,您可以使用AWS python官方库
    boto3
    重写小型上传函数。关于如何处理这些错误/响应代码的讨论

  • Databricks在其应用程序中似乎还具有审计日志功能


谢谢,我曾经尝试过/Except,现在我至少可以发现我的工作成功与否。