我想從另一個磚筆記本運行筆記本的列表。
my_notebooks = ["。/設置”、“。/ do_the_main_thing”、“。筆記本在my_notebooks / check_results”): %筆記本運行
當然這並不工作。我不想使用dbutils.notebook.run(),這創造了新的就業機會,不返回任何東西——我希望一切可執行,可查詢從主筆記本。
我想也許有可能進口的實際模塊和運行功能。
? %顯示命令指向運行IPython /核心/魔法/執行。py和運行方法的類ExecutionMagics模塊執行。
也許,我可以使用execution.ExecutionMagic.run()如果我創建的類的實例。
但它是超出我——棘手,我懷疑這是一個有效的解決方案。
如何做到這點呢?
我真的堅持:-
%運行。/一個筆記本%。/ another_notebook %運行。/ yet_another_hardcoded_notebook_name
永遠感謝任何幫助!
嗨@Philip布萊克曼說
您可以使用scala或python構造使用線程和期貨。
你可以從這個鏈接下載筆記本存檔。
https://docs.m.eheci.com/notebooks/notebook-workflows.html run-multiple-notebooks-concurrently
之後,根據你的喜好,設置並行運行筆記本使用的數量numNotebooksInParallel變量。如果你隻是想要1筆記本,你能做的也隻是通過刪除不必要的部分。
小心不要撞你的驅動提供了太多的平行的筆記本。
希望這可以幫助. .歡呼。
嗨
謝謝你的回答,但這不是我。它是能夠提供一個列表作為一個變量。
我將運行係列的筆記本。
基本上你能運行{mynotebook} % ?
我認為答案是否定的。
https://stackoverflow.com/questions/74518979/how-to-run-a-list-of-notebooks-in-databricks
請參考下麵代碼
進口scala.concurrent。{未來,等待}scala.concurrent.duration進口。_進口scala.util.control。非致命的案例類NotebookData(路徑:字符串,超時:Int參數:地圖(字符串,字符串)=地圖。空(字符串,字符串))def parallelNotebooks(筆記本:Seq [NotebookData]):未來(Seq [String]] = {scala.concurrent進口。{未來,阻塞,等待}導入java . util . concurrent。進口scala.concurrent執行人。ExecutionContext com.databricks進口。WorkflowException val numNotebooksInParallel = 4 / /如果您創建太多的筆記本並行驅動程序可能會崩潰當你提交的所有作業。/ /這段代碼限製並行筆記本的數量。隱式val ec = ExecutionContext.fromExecutor (Executors.newFixedThreadPool (numNotebooksInParallel)) val ctx = dbutils.notebook.getContext()的未來。序列(筆記本。地圖{未來筆記本= > {dbutils.notebook.setContext (ctx)如果(notebook.parameters.nonEmpty) dbutils.notebook.run (notebook.path,筆記本。超時,notebook.parameters)其他dbutils.notebook.run (notebook.path notebook.timeout)} .recover{情況下非致命的(e) = > s”錯誤:$ {e。getMessage}}})} def parallelNotebook(筆記本:NotebookData):未來[String] = {scala.concurrent進口。{未來,阻塞,等待}導入java . util . concurrent。進口scala.concurrent執行人。ExecutionContext.Implicits.global import com.databricks.WorkflowException val ctx = dbutils.notebook.getContext() // The simplest interface we can have but doesn't // have protection for submitting to many notebooks in parallel at once Future { dbutils.notebook.setContext(ctx) if (notebook.parameters.nonEmpty) dbutils.notebook.run(notebook.path, notebook.timeout, notebook.parameters) else dbutils.notebook.run(notebook.path, notebook.timeout) } .recover { case NonFatal(e) => s"ERROR: ${e.getMessage}" } }