我编写了一个 Azure Databricks scala notebook(基于 JAR 库),并且每小时使用一次 Databricks 作业运行它。
在代码中,我使用 Application Insights Java SDK 进行日志跟踪,并初始化一个标记“RunId”的 GUID。我在 Scala 的“对象”构造函数中执行此操作:
object AppInsightsTracer
{
TelemetryConfiguration.getActive().setInstrumentationKey("...");
val tracer = new TelemetryClient();
val properties = new java.util.HashMap[String, String]()
properties.put("RunId", java.util.UUID.randomUUID.toString);
def trackEvent(name: String)
{
tracer.trackEvent(name, properties, null)
}
}
笔记本本身只是调用 JAR 中的代码:
import com.mypackage._
Flow.go()
我希望每小时有一个不同的“RunId”。我看到的奇怪行为是,对于所有运行,我在日志中得到完全相同的“RunId”!好像 Scala 对象构造函数代码只运行一次,并在笔记本运行之间重复使用......
Spark/Databricks 笔记本是否在运行之间保留上下文?如果是这样,如何避免这种情况?
蝴蝶不菲
慕少森
相关分类