获取正在运行的Databricks作业的类名



有一个Apache Spark Scala项目(runnerProject(在同一个包(

sourceProject以下方法的问题是,当从runnerProject调用时,它返回源项目的详细信息,而不是运行程序项目的名称和版本

sourceProject的方法:

class EnvironmentInfo(appName: String) {

override def getJobDetails(): (String, String) = {
val classPackage = getClass.getPackage
val jobName = classPackage.getImplementationTitle
val jobVersion = classPackage.getImplementationVersion
(jobName, jobVersion)
}
}

runnerProject使用sourceProject作为包:

import com.sourceProject.environment.{EnvironmentInfo}
class runnerProject {
def start(
environment: EnvironmentInfo
): Unit = {
// using the returned parameters of the environment
}

如何以getJobDetails((sourceProject中运行的方式解决此问题,以便它也可以从其他项目调用,而不仅仅是runnerProject。而且,它应该返回关于";呼叫者";作业

提前感谢!:(

尝试以下操作,它从堆栈跟踪中获取调用类名,并使用它来获取实际的类和它的包。

class EnvironmentInfo(appName: String) {

override def getJobDetails(): (String, String) = {
val callingClassName = Thread.currentThread.getStackTrace()(2).getClassName
val classPackage = Class.forName(callingClassName).getPackage
val jobName = classPackage.getImplementationTitle
val jobVersion = classPackage.getImplementationVersion
(jobName, jobVersion)
}
}

如果你直接调用它,它会起作用,如果你在lambda函数中调用它,可能会给你错误的包。

最新更新