gpt4 book ai didi

java - Databricks Spark 笔记本在运行之间重复使用 Scala 对象?

转载 作者:行者123 更新时间:2023-12-02 02:00:07 25 4
gpt4 key购买 nike

我编写了一个 Azure Databricks scala 笔记本(基于 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 笔记本是否保留运行之间的上下文?如果是这样,如何避免这种情况?

最佳答案

Jupyter 笔记本会生成一个 Spark session (将其视为一个进程)并使其保持 Activity 状态,直到它终止或您显式重新启动它。该对象是单例,因此它会初始化一次,并且对于笔记本的所有单元执行都是相同的。

关于java - Databricks Spark 笔记本在运行之间重复使用 Scala 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51702906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com