在PySpark中使用S3A保存文件时,获取S3响应代码(仅HTTP代码,例如200,300,400,403,500等)



我正在尝试获取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作为状态代码获得返回。注意:我可以将文件保存在S3中为Avro格式。

谢谢

这是此问题中讨论的类似概念,获取包装S3 API的库或功能的状态代码:Amazon S3 Post,完成后完成的事件?


最终,如果Databricks是库处理上传的库,则df.write.save(...)功能调用的结果响应代码将在Databricks函数调用结果的某个地方找到。

databricks支持s3s3a作为保存文件的目标目的地(如此处所示),但似乎没有数据链球形在此处从基础操作中浮出响应代码(也许他们确实找不到它,我找不到它在任何文档中)。

向前迈进的一些选择:

  • 假设Databricks会为该上传丢弃"某种"错误,那么简单的try/except将允许您正确捕获此问题(尽管任何非databricks级别的错误仍然会通过)。

    <) <)。
  • 在AWS上,S3存储桶上传是一个事件源,可以用作其他操作的触发器,例如调用AWS lambda,您可以使用它来调用任意云托管函数。有关此教程中此架构的样子的许多信息。

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

  • databricks似乎也具有企业产品中某个地方的审核记录功能。

相关内容

  • 没有找到相关文章

最新更新