在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
}