Pyspark 同时为不同的参数运行相同的Databricks笔记本?
以下代码(不是我的)能够同时运行NotebookA和NotebookB。我需要一些帮助来找出如何将多个参数传递到同一个笔记本 我想将此参数列表传递给每个笔记本:Pyspark 同时为不同的参数运行相同的Databricks笔记本?,pyspark,databricks,Pyspark,Databricks,以下代码(不是我的)能够同时运行NotebookA和NotebookB。我需要一些帮助来找出如何将多个参数传递到同一个笔记本 我想将此参数列表传递给每个笔记本: args = {} args["arg1"] = "some value" args["arg2"] = "another value" 如果我想将上面的参数传递给每个正在运行的笔记本,我需要在下面的代码中修改什么 以下是工作代码: from multip
args = {}
args["arg1"] = "some value"
args["arg2"] = "another value"
如果我想将上面的参数传递给每个正在运行的笔记本,我需要在下面的代码中修改什么
以下是工作代码:
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
也接受第三个参数,这是一个参数映射(请参阅)。因此,在您的情况下,您需要将run\u in\u parallel
的定义更改为如下内容:
并行运行=lambda x:dbutils.notebook.run(x,1800,args)
代码的其余部分应该是相同的
如果要将不同的参数传递给不同的笔记本,则需要有一个元组列表,并将此列表传递给映射
,如下所示:
data=[('notebook1',{'arg1':'abc'}),('notebook2',{'arg1':'def','arg2':'jkl'})]
...
并行运行=lambda x:dbutils.notebook.run(x[0],1800,x[1])
使用ThreadPoolExecutor(3)作为池:
extend(pool.map(并行运行,数据))
dbutils.notebook.run
也接受第三个参数,这是一个参数映射(请参阅)。因此,在您的情况下,您需要将run\u in\u parallel
的定义更改为如下内容:
并行运行=lambda x:dbutils.notebook.run(x,1800,args)
代码的其余部分应该是相同的
如果要将不同的参数传递给不同的笔记本,则需要有一个元组列表,并将此列表传递给映射
,如下所示:
data=[('notebook1',{'arg1':'abc'}),('notebook2',{'arg1':'def','arg2':'jkl'})]
...
并行运行=lambda x:dbutils.notebook.run(x[0],1800,x[1])
使用ThreadPoolExecutor(3)作为池:
extend(pool.map(并行运行,数据))