运行依赖于另一个任务的Luigi任务

时间:2019-11-27 23:19:52

标签: apache-spark luigi hail

我有一项任务SeqrMTToESTask依赖于另一项名为SeqrVCFToMTTask的任务。您可以在此处查看完整的代码:

https://github.com/macarthur-lab/hail-elasticsearch-pipelines/blob/master/luigi_pipeline/seqr_loading.py

现在,我在终端中分别运行第一个任务并生成了输出文件-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的命令),而该命令依赖于其他任务本身必需的参数?

1 个答案:

答案 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