Python Luigi:如何创建外部依赖项/目标?

时间:2019-01-04 06:59:40

标签: python python-3.x pipeline luigi

在Luigi中,如何检查外部资源(在我的示例中为Elasticsearch索引,但可以是任何东西),如果不存在,则要创建它?我的问题是任务总是必须生成一个输出文件,否则它们将被视为已完成并且无法运行。

这里https://github.com/spotify/luigi/issues/595似乎很hack,而且我的类中也没有run()方法(它由父类CopyToIndex实现):

class UpdateIndex(CopyToIndex):
    source: str = Parameter(default='')

    iteration = luigi.IntParameter()

    def requires(self):
        return FilterDataset(self.source)

    def docs(self):
        file_path: str = os.path.join('tmp', '{0}_filtered_output.ldj'.format(self.source))
        file_contents = open(file_path, 'r').read()
        return [json.loads(str(item)) for item in file_contents.strip().split('\n')]

    # properties of parent class CopyToIndex:
    host = 'localhost'
    port = 9200
    index = 'example'
    doc_type = '_doc'
    purge_existing_index = True
    marker_index_hist_size = 1
    mapping = {
        'properties': {
            'name': {'type': 'keyword'},
            'name_suggest': {
                'type': 'completion',
            }
        }
    }
    settings = {
        'number_of_shards': 1,
        'number_of_replicas': 0
    }

0 个答案:

没有答案