簡體   English   中英

同時為不同的 arguments 運行相同的 Databricks 筆記本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM