亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Databricks Spark 筆記本在運行之間重用 Scala 對象?

Databricks Spark 筆記本在運行之間重用 Scala 對象?

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

2 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

Jupyter notebook 產生一個 Spark 會話(將其視為一個進程)并使其保持活動狀態,直到它死掉,或者您明確地重新啟動它。該對象是一個單例,因此它被初始化一次,并且對于筆記本的所有單元執行都是相同的。


查看完整回答
反對 回復 2021-06-30
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

每次刷新筆記本時,都會從一個新的上下文開始。

我建議將您的 RunId 保存到磁盤文件中,然后在每次筆記本運行時讀取該文件,然后增加文件中的 RunId。


查看完整回答
反對 回復 2021-06-30
  • 2 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號