簡體   English   中英

將tsv文件從本地文件系統移動到luigi中的S3

[英]Moving a tsv file from local file system to S3 in luigi

以下程序不輸出任何內容,也不引發任何錯誤。 我是否在to_S3()類中缺少run()方法形式的內容?

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")

Mysql_to_tsv()類的output()方法為:

def output(self):
        return luigi.LocalTarget('/Users/user/Desktop/Work/Luigi/test_data.tsv')

請幫助正確執行該任務的類。

我本來想要將一些數據放入S3存儲桶中。

因此,無需使用output()方法即可運行特定任務(例如:將數據轉儲到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")

是的,所有非外部luigi任務都需要run()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM