-1

我有一项任务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使用 spark 运行任务(gcloud_dataproc/submit.py只是构造使用的命令spark-submit),它依赖于具有自己所需参数的其他任务?

4

1 回答 1

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
于 2019-11-27T23:56:08.893 回答