我試圖運行以下筆記本通過磚但讓下麵的錯誤。我試圖更新筆記本超時和重試機製,但仍然沒有運氣。
NotebookData(“/用戶/ mynotebook ", 9900年,重試= 3)
]
res = parallelNotebooks(筆記本,2)
結果= [f.result(超時= 9900)f在res) #這是一個阻塞調用。
打印(結果)
有人能幫我解決這個問題嗎?謝謝
% python
從並發。期貨進口ThreadPoolExecutor
類NotebookData:
def __init__(自我、路徑、超時參數= None,重試= 0):
自我。路徑=路徑
自我。timeout =超時
自我。參數=參數
自我。重試=重試
def submitNotebook(筆記本):
打印(筆記本運行% s % notebook.path)
試一試:
如果(notebook.parameters):
返回dbutils.notebook.run (notebook.path,筆記本。超時,notebook.parameters)
其他:
返回dbutils.notebook.run (notebook.path notebook.timeout)
除了例外:
如果筆記本。重試< 1:
提高
打印(重試筆記本% s % notebook.path)
筆記本。重試=筆記本。重試- 1
submitNotebook(筆記本)
def parallelNotebooks(筆記本,numInParallel):
#這段代碼限製並行筆記本的數量。
與ec ThreadPoolExecutor (max_workers = numInParallel):
返回(ec。提交(submitNotebook、筆記本)筆記本筆記本)
筆記本電腦= [
NotebookData(“/用戶/ mynotebook”, 1200000,重試= 0)
]
res = parallelNotebooks(筆記本,2)
結果= [f.result(超時= 1200000)f在res) #這是一個阻塞調用。
打印(結果)
錯誤:
Py4JJavaError:調用o1741._run時發生一個錯誤。
:com.databricks。WorkflowException: com.databricks。NotebookExecutionException:失敗
com.databricks.workflow.WorkflowDriver.run (WorkflowDriver.scala: 95)
com.databricks.dbutils_v1.impl.NotebookUtilsImpl.run (NotebookUtilsImpl.scala: 122)
com.databricks.dbutils_v1.impl.NotebookUtilsImpl._run (NotebookUtilsImpl.scala: 89)
在sun.reflect.GeneratedMethodAccessor820。調用(未知源)
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 43)
java.lang.reflect.Method.invoke (Method.java: 498)
py4j.reflection.MethodInvoker.invoke (MethodInvoker.java: 244)
py4j.reflection.ReflectionEngine.invoke (ReflectionEngine.java: 380)
py4j.Gateway.invoke (Gateway.java: 295)
py4j.commands.AbstractCommand.invokeMethod (AbstractCommand.java: 132)
py4j.commands.CallCommand.execute (CallCommand.java: 79)
py4j.GatewayConnection.run (GatewayConnection.java: 251)
java.lang.Thread.run (Thread.java: 748)
引起的:com.databricks。NotebookExecutionException:失敗
com.databricks.workflow.WorkflowDriver.run0 (WorkflowDriver.scala: 141)
com.databricks.workflow.WorkflowDriver.run (WorkflowDriver.scala: 90)
…12
不知道這段代碼,但火花執行工作的工作,所以ThreadPoolExecutor沒有多大意義。如果你想並行執行的筆記本,請運行它們作為獨立工作與公平調度器(所以你儲備資源為每個筆記本——在第一行sc.setLocalProperty (“spark.scheduler。池”、“somename”)當somename獨特的平行筆記本執行)