S3のファイルを参照してみた | Luigi Advent Calendar 2016 #09
はじめに
好物はインフラとフロントエンドのかじわらゆたかです。
このエントリは『Luigi Advent Calendar 2016』9日目の内容となります。
今回はLuigiのS3モジュールの挙動について調べてみたいと思います。
先日8日目はタスクの結果をS3に保存してみたでした。
下準備編
S3に以下が配置されていることを前提とします。
1 Customer#000000001 IVhzIApeRb MOROCCO 0 MOROCCO AFRICA 25-989-741-2988 BUILDING 2 Customer#000000002 XSTf4,NCwDVaWNe6tE JORDAN 1 JORDAN MIDDLE EAST 23-768-687-3665 AUTOMOBILE 3 Customer#000000003 MG9kdTD ARGENTINA7 ARGENTINA AMERICA 11-719-748-3364 AUTOMOBILE 4 Customer#000000004 XxVSJsL EGYPT 4 EGYPT MIDDLE EAST 14-128-190-5944 MACHINERY 5 Customer#000000005 KvpyuHCplrB84WgAi CANADA 5 CANADA AMERICA 13-750-942-6364 HOUSEHOLD 6 Customer#000000006 sKZz0CsnMD7mp4Xd0YrBvx SAUDI ARA2 SAUDI ARABIA MIDDLE EAST 30-114-968-4951 AUTOMOBILE 7 Customer#000000007 TcGe5gaZNgVePxU5kR CHINA 0 CHINA ASIA 28-190-982-9759 AUTOMOBILE 8 Customer#000000008 I0B10bB0AymmC, 0PrRYBC PERU 6 PERU AMERICA 27-147-574-9335 BUILDING 9 Customer#000000009 xKiAFTjUsCuxfele INDIA 6 INDIA ASIA 18-338-906-3675 FURNITURE 10 Customer#000000010 6LrEaV6KR6PLVcgl2ArL ETHIOPIA 9 ETHIOPIA AFRICA 15-741-346-9870 HOUSEHOLD
11 Customer#000000011 PkWS 3HlXqwTuz UNITED KI3 UNITED KINGDOM EUROPE 33-464-151-3439 BUILDING 12 Customer#000000012 9PWKuhzT JORDAN 5 JORDAN MIDDLE EAST 23-791-276-1263 HOUSEHOLD 13 Customer#000000013 nsXQu0oVjD7PM6 CANADA 8 CANADA AMERICA 13-761-547-5974 BUILDING 14 Customer#000000014 KXkletMlL ARGENTINA0 ARGENTINA AMERICA 11-845-129-3851 FURNITURE 15 Customer#000000015 YtWggXoOLdwdo7b0y,BZaGU UNITED KI0 UNITED KINGDOM EUROPE 33-687-542-7601 HOUSEHOLD 16 Customer#000000016 cYiaeMLZSMA IRAN 5 IRAN MIDDLE EAST 20-781-609-3107 FURNITURE 17 Customer#000000017 izrh 6jdqtp2eqdtbkswDD8 BRAZIL 6 BRAZIL AMERICA 12-970-682-3487 AUTOMOBILE 18 Customer#000000018 3txGO AiuFux3zT FRANCE 0 FRANCE EUROPE 16-155-215-1315 BUILDING 19 Customer#000000019 uc,3bHIx84H,wdrmLO CHINA 3 CHINA ASIA 28-396-526-5053 HOUSEHOLD 20 Customer#000000020 JrPk8Pq RUSSIA 0 RUSSIA EUROPE 32-957-234-8742 FURNITURE
S3のファイル参照
ファイルの参照については、ローカルファイルの参照と同様にOutputメソッドで指定したクラスを作成し、
作成したクラスをRequiresメソッドで指定することで、参照することが可能です。
import luigi import luigi.s3 class S3Input(luigi.Task): bucketName = luigi.Parameter(default="cm-kajiwara-luigi-study") fileName = luigi.Parameter(default="customer.tsv") def output(self): return luigi.s3.S3Target("s3://{}/{}".format(self.bucketName, self.fileName)) class S3TsvColumnShow(luigi.Task): def requires(self): return [S3Input(fileName='customer{}.tsv'.format(d)) for d in range(2)] def run(self): for t in self.input(): with t.open('r') as in_file: for line in in_file: print line if __name__ == '__main__': luigi.run()
$ python UseS3.py --local-scheduler S3TsvColumnShow 1 Customer#000000001 IVhzIApeRb MOROCCO 0 MOROCCO AFRICA 25-989-741-2988 BUILDING 2 Customer#000000002 XSTf4,NCwDVaWNe6tE JORDAN 1 JORDAN MIDDLE EAST 23-768-687-3665 AUTOMOBILE 3 Customer#000000003 MG9kdTD ARGENTINA7 ARGENTINA AMERICA 11-719-748-3364 AUTOMOBILE 4 Customer#000000004 XxVSJsL EGYPT 4 EGYPT MIDDLE EAST 14-128-190-5944 MACHINERY 5 Customer#000000005 KvpyuHCplrB84WgAi CANADA 5 CANADA AMERICA 13-750-942-6364 HOUSEHOLD 6 Customer#000000006 sKZz0CsnMD7mp4Xd0YrBvx SAUDI ARA2 SAUDI ARABIA MIDDLE EAST 30-114-968-4951 AUTOMOBILE 7 Customer#000000007 TcGe5gaZNgVePxU5kR CHINA 0 CHINA ASIA 28-190-982-9759 AUTOMOBILE 8 Customer#000000008 I0B10bB0AymmC, 0PrRYBC PERU 6 PERU AMERICA 27-147-574-9335 BUILDING 9 Customer#000000009 xKiAFTjUsCuxfele INDIA 6 INDIA ASIA 18-338-906-3675 FURNITURE 10 Customer#000000010 6LrEaV6KR6PLVcgl2ArL ETHIOPIA 9 ETHIOPIA AFRICA 15-741-346-9870 HOUSEHOLD 11 Customer#000000011 PkWS 3HlXqwTuz UNITED KI3 UNITED KINGDOM EUROPE 33-464-151-3439 BUILDING 12 Customer#000000012 9PWKuhzT JORDAN 5 JORDAN MIDDLE EAST 23-791-276-1263 HOUSEHOLD 13 Customer#000000013 nsXQu0oVjD7PM6 CANADA 8 CANADA AMERICA 13-761-547-5974 BUILDING 14 Customer#000000014 KXkletMlL ARGENTINA0 ARGENTINA AMERICA 11-845-129-3851 FURNITURE 15 Customer#000000015 YtWggXoOLdwdo7b0y,BZaGU UNITED KI0 UNITED KINGDOM EUROPE 33-687-542-7601 HOUSEHOLD 16 Customer#000000016 cYiaeMLZSMA IRAN 5 IRAN MIDDLE EAST 20-781-609-3107 FURNITURE 17 Customer#000000017 izrh 6jdqtp2eqdtbkswDD8 BRAZIL 6 BRAZIL AMERICA 12-970-682-3487 AUTOMOBILE 18 Customer#000000018 3txGO AiuFux3zT FRANCE 0 FRANCE EUROPE 16-155-215-1315 BUILDING 19 Customer#000000019 uc,3bHIx84H,wdrmLO CHINA 3 CHINA ASIA 28-396-526-5053 HOUSEHOLD 20 Customer#000000020 JrPk8Pq RUSSIA 0 RUSSIA EUROPE 32-957-234-8742 FURNITURE
LuigiのS3モジュールにより前回と同様ファイルの書き込み・参照はS3なのかローカルなのかは、
ほとんど意識せず書くことができるのがわかります。
まとめ
今回はLugiのS3のモジュールでの参照を行いました。
次回はLuigiのモジュールを用いてのS3のファイル削除・一覧習得について取り上げます。