我編寫了一個 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 筆記本是否在運行之間保留上下文?如果是這樣,如何避免這種情況?
Databricks Spark 筆記本在運行之間重用 Scala 對象?
慕的地8271018
2021-06-11 14:02:55