以下程序不会输出任何内容,也不会抛出任何错误。我是否遗漏了run()类中的to_S3()方法的形式?
class to_S3(luigi.Task):
#The class Mysql_to_tsv converts the data returned by a query on a Mysqldb and stores the data in a tsv in a local file.
def requires(self):
return [Mysql_to_tsv]
def output(self):
return luigi.S3Target("https://s3.amazonaws.com/bucket-name/luigi_attempt.tsv")output()类的Mysql_to_tsv()方法是:
def output(self):
return luigi.LocalTarget('/Users/user/Desktop/Work/Luigi/test_data.tsv')请帮助完成任务的正确的类实现。
发布于 2015-09-01 09:13:36
我最初想要的是将一些数据放入S3桶中。
因此,不需要output()方法就可以运行特定的任务(Ex:将数据转储到S3桶)。
它可以直接在run()方法中完成,output()可以用于检查标志或是否存在。
因此,正确的实施是:
class to_S3(luigi.Task):
def requires(self):
return [Mysql_to_csv()]
def run(self):
#Creating a connection
access_key = ""
access_secret = ""
conn = S3Connection(access_key, access_secret)
#Connecting to the bucket
bucket_name = ""
bucket = conn.get_bucket(bucket_name)
#Setting up the keys
k = Key(bucket)
k.key = "sample1"
k.set_contents_from_filename("../test_data.tsv")发布于 2015-08-26 07:41:52
是的,所有非外部的luigi任务都需要一个run()方法.
https://stackoverflow.com/questions/32219927
复制相似问题