我有一项任务SeqrMTToESTask
依赖于另一项名为SeqrVCFToMTTask
的任务。您可以在此处查看完整的代码:
现在,我在终端中分别运行第一个任务并生成了输出文件-sample.mt
。当我启动第二个任务-SeqrMTToESTask
时,我希望它能够检查第一个任务-sample.mt
的输出,如果存在,则取出文件并继续进行,但这不是正在发生的情况。取而代之的是,我得到的错误指示缺少第一个任务的某些参数,例如:
luigi.parameter.MissingParameterException:SeqrVCFToMTTask [args =(), kwargs = {}]:需要设置“ source_paths”参数
我用于运行第二个任务的完整命令是:
python -u gcloud_dataproc/submit.py --cpu-limit 4 --num-executors 1 --hail-version 0.2
--run-locally luigi_pipeline/seqr_loading.py SeqrMTToESTask --local-scheduler
--dest-file hdfs://.../seqr-loading-test/_SUCCESS_TO_ES --source-path hdfs://.../seqr-loading-test/sample.mt
--spark-home $SPARK_HOME --es-host cp-nodedev1 --es-port 7890 --es-index sample_luigi
因此,我的问题是以下内容:我应该如何运行带有火花的luigi
任务(gcloud_dataproc/submit.py
只是构造使用spark-submit
的命令),而该命令依赖于其他任务本身必需的参数?
答案 0 :(得分:0)
显然,正确的方法是仅使用luigi配置文件(在我的情况下为seqr-loading-local-GRCh37.cfg
)文件中,我们为所有任务指定所有参数。因此,在为任务指定了所有参数之后,我可以通过以下方式运行它:
LUIGI_CONFIG_PATH=luigi_pipeline/configs/seqr-loading-local-GRCh37.cfg python
-u gcloud_dataproc/submit.py --cpu-limit 4 --num-executors 1 --hail-version 0.2
--run-locally luigi_pipeline/seqr_loading.py SeqrMTToESTask --local-scheduler --spark-home $SPARK_HOME