如何在数据块中的 spark 提交任务中获取用户名?

How to get username inside spark submit task in databricks?

我正在尝试在 Databricks 的 spark-submit 任务中检索用户名,以将有关正在更改数据的用户的其他信息写入 table。不幸的是,我找不到正确的方法。 现在,我正在尝试两件事:

spark.sparkContext.sparkUser

System.getProperty("user.name")

但他们都 return root。 您知道如何实现吗?

如果您使用的是 Delta Lake tables,则有关已执行操作的信息会在 Delta Lake table 的历史记录中捕获 - 请参阅 documentation 中的示例。

Databricks 通过 spark.conf 公开了大量信息 - 配置属性以 spark.databricks.clusterUsageTags. 开头,因此您可以过滤所有配置并搜索必要的信息。

但您需要考虑到作业中的所有操作都是在作业所有者的身份下执行的,即使它是由其他人触发的。

有一个 spark.databricks.clusterUsageTags.clusterAllTags 配置 属性,其中包含一个 JSON 字符串,该字符串包含集群标签列表,还包括 Owner 字段以及拥有用户的电子邮件Databricks 作业。