首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在luigi中将tsv文件从本地文件系统移动到S3

在luigi中将tsv文件从本地文件系统移动到S3
EN

Stack Overflow用户
提问于 2015-08-26 07:00:00
回答 2查看 827关注 0票数 1

以下程序不会输出任何内容,也不会抛出任何错误。我是否遗漏了run()类中的to_S3()方法的形式?

代码语言:javascript
复制
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()方法是:

代码语言:javascript
复制
def output(self):
        return luigi.LocalTarget('/Users/user/Desktop/Work/Luigi/test_data.tsv')

请帮助完成任务的正确的类实现。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-01 09:13:36

我最初想要的是将一些数据放入S3桶中。

因此,不需要output()方法就可以运行特定的任务(Ex:将数据转储到S3桶)。

它可以直接在run()方法中完成,output()可以用于检查标志或是否存在。

因此,正确的实施是:

代码语言:javascript
复制
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")
票数 1
EN

Stack Overflow用户

发布于 2015-08-26 07:41:52

是的,所有非外部的luigi任务都需要一个run()方法.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32219927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档