Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Databricks Spark笔记本在运行之间是否重新使用Scala对象?_Java_Scala_Azure_Apache Spark_Azure Application Insights - Fatal编程技术网

Java Databricks Spark笔记本在运行之间是否重新使用Scala对象?

Java Databricks Spark笔记本在运行之间是否重新使用Scala对象?,java,scala,azure,apache-spark,azure-application-insights,Java,Scala,Azure,Apache Spark,Azure Application Insights,我已经编写了一个Azure Databricks scala笔记本(基于JAR库),并且每小时使用Databricks作业运行一次 在代码中,我使用ApplicationInsightsJavaSDK进行日志跟踪,并初始化一个标记为“RunId”的GUID。我在Scala“对象”构造函数中执行此操作: object AppInsightsTracer { TelemetryConfiguration.getActive().setInstrumentationKey("..."); va

我已经编写了一个Azure Databricks scala笔记本(基于JAR库),并且每小时使用Databricks作业运行一次

在代码中,我使用ApplicationInsightsJavaSDK进行日志跟踪,并初始化一个标记为“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笔记本是否在运行之间保留上下文?如果是这样,如何避免这种情况?

每次刷新笔记本时,您都会从一个新的上下文开始


我建议将您的RunId保存到磁盘文件中,然后在每次运行笔记本时读取该文件,然后增加文件中的RunId。

每次刷新笔记本时,您都从一个新的上下文开始


我建议将您的RunId保存到磁盘上的文件中,然后在每次笔记本运行时读取该文件,然后在文件中增加RunId。

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

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