[英]Run same Databricks notebook for different arguments concurrently?
以下代碼(不是我的)能夠同時運行 NotebookA 和 NotebookB。 我需要一些幫助來弄清楚如何將多個 arguments 傳遞給同一個筆記本。
我想將這個 arguments 列表傳遞給每個筆記本:
args = {}
args["arg1"] = "some value"
args["arg2"] = "another value"
如果我想將上面的 arguments 傳遞給每個正在運行的筆記本,我需要在下面的代碼中修改什么?
這是工作代碼:
from multiprocessing.pool import ThreadPool
pool = ThreadPool(10)
inputs = [("NotebookA", "NotebookB") ]
run_in_parallel = lambda x: dbutils.notebook.run(x, 1800)
from concurrent.futures import ThreadPoolExecutor, wait
pool = ThreadPoolExecutor(3)
results = []
with ThreadPoolExecutor(3) as pool:
for x in inputs:
results.extend(pool.map(run_in_parallel, list(x)))
dbutils.notebook.run
接受第三個參數,這是一個 map 參數( 有關更多詳細信息,請參閱文檔)。 因此,在您的情況下,您需要將run_in_parallel
的定義更改為如下所示:
run_in_parallel = lambda x: dbutils.notebook.run(x, 1800, args)
和代碼的rest應該是一樣的。
如果您想將不同的 arguments 傳遞給不同的筆記本,那么您需要有一個元組列表,並將此列表傳遞給map
,如下所示:
data = [('notebook 1', {'arg1':'abc'}), ('notebook2', {'arg1': 'def', 'arg2': 'jkl'})]
...
run_in_parallel = lambda x: dbutils.notebook.run(x[0], 1800, x[1])
with ThreadPoolExecutor(3) as pool:
results.extend(pool.map(run_in_parallel, data))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.