如何在Databricks中记录自定义Python应用程序日志并将其移动到Azure



我需要在python中开发一个应用程序。python应用程序将与任何数据库进行交互,并对其执行sql语句。它还可以与Databricks实例进行交互,查询Databricks中的表。

要求是python应用程序应该是独立于平台的。因此,该应用程序的开发方式是,如果它在数据块上运行,那么它只会触发应用程序中的spark特定代码。如果它在独立节点上运行,则会跳过。python程序与Azure blob存储交互以访问某些文件/文件夹。python应用程序作为Wheel部署在独立节点/Databricks上。

这里的问题是自定义日志记录。我已经在python应用程序中实现了自定义日志记录。根据应用程序的运行位置,这里有两种场景。

  1. 独立节点
  2. Databricks群集

如果代码在独立节点上运行,那么自定义日志最初会被记录到本地操作系统文件夹中,在应用程序成功/失败后,它会被移动到azure blob存储中。但由于某种原因,如果它无法将日志文件移动到azure存储,它仍然可以在Standalone Node的本地文件系统中使用。

如果在Databricks上采用相同的方法,如果应用程序未能将日志文件上传到blob存储,我们将无法恢复它,因为DatabricksOS存储是不稳定的。我试图将日志写入dbfs。但它不允许附加。

有没有办法从数据块获取应用程序日志?数据块是否有可能记录我的作业执行并存储日志?正如我提到的,python应用程序被部署为轮子,并且它包含非常有限的spark代码。

有没有办法从databricks获取应用程序日志?有没有数据块可以记录我的作业执行并存储的可能性日志?

我认为您现在可以做到这一点,但一旦集群关闭(以最大限度地降低成本(,日志就会消失。我很感谢你分享DBFS中的日志只能被附加,我不知道这一点。

你的独立应用程序是否对互联网开放,如果是,你可以探索将日志写入Azure事件中心的选项。您可以从ADb和独立应用程序写入eventhub,然后将其写入blob等以进行进一步的可视化。本教程应该让您开始学习。https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-python-get-started-send

HTH-

最新更新