在 pyspark databricks 中并行执行多个笔记本
Execute multiple notebooks in parallel in pyspark databricks
问题很简单:
master_dim.py 调用 dim_1.py 和 dim_2.py 并行执行。这在 databricks pyspark 中可能吗?
下图解释了我正在尝试做什么,由于某种原因它出错了,我在这里遗漏了什么吗?
你的问题是你只将 Test/
作为第一个参数传递给 dbutils.notebook.run
(要执行的笔记本的名称),但你没有这样名称的笔记本。
您需要将路径列表从 ['Threading/dim_1', 'Threading/dim_2']
修改为 ['dim_1', 'dim_2']
并将 dbutils.notebook.run('Test/', ...)
替换为 dbutils.notebook.run(path, ...)
或将dbutils.notebook.run('Test/', ...)
改为dbutils.notebook.run('/Test/' + path, ...)
仅供其他人使用,以防他们了解它的工作原理:
from multiprocessing.pool import ThreadPool
pool = ThreadPool(5)
notebooks = ['dim_1', 'dim_2']
pool.map(lambda path: dbutils.notebook.run("/Test/Threading/"+path, timeout_seconds= 60, arguments={"input-data": path}),notebooks)
问题很简单:
master_dim.py 调用 dim_1.py 和 dim_2.py 并行执行。这在 databricks pyspark 中可能吗?
下图解释了我正在尝试做什么,由于某种原因它出错了,我在这里遗漏了什么吗?
你的问题是你只将 Test/
作为第一个参数传递给 dbutils.notebook.run
(要执行的笔记本的名称),但你没有这样名称的笔记本。
您需要将路径列表从 ['Threading/dim_1', 'Threading/dim_2']
修改为 ['dim_1', 'dim_2']
并将 dbutils.notebook.run('Test/', ...)
替换为 dbutils.notebook.run(path, ...)
或将dbutils.notebook.run('Test/', ...)
改为dbutils.notebook.run('/Test/' + path, ...)
仅供其他人使用,以防他们了解它的工作原理:
from multiprocessing.pool import ThreadPool
pool = ThreadPool(5)
notebooks = ['dim_1', 'dim_2']
pool.map(lambda path: dbutils.notebook.run("/Test/Threading/"+path, timeout_seconds= 60, arguments={"input-data": path}),notebooks)