TD & AWS連携:Treasure Dataの結果をAmazon S3に書き出す

2014.12.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

このエントリは、以下アドベントカレンダー『Treasure Data Advent Calendar 2014』の8日目(12/8)のエントリです。

本日8日目のエントリは、Treasure DataからAmazon S3へのデータエクスポートを行う手順についてご紹介してみようと思います。先日、AWSへのデータエクスポートに関するエントリ『Treasure DataからAmazon Redshiftへのエクスポート』について投稿・ご紹介していましたが、この他にもAWSのリソースに対するエクスポートの出力先は幾つか用意・提供されています。今回はRedshiftに続いてAmazon S3へのデータ連携を、というところです。

目次

管理コンソールベースでの実行

まずはTreasure Dataのアカウントを用意し、適当なクエリを実行出来る環境を用意します。当エントリでは、以前取り上げた以下のエントリを情報を用いて、サンプルで用意されている『www_access』のデータを使ってみたいと思います。クエリを実行し、成功している事を確認しつつ[Edit Query]をクリック。

td-to-ts-02

[Result Export]という設定項目欄に[Add]というボタンが有りますので、そこをクリック。

td-to-s3-03

エクスポート先の一覧が選択可能となっていますので、『S3/Riak CS』を選択。

td-to-s3-04

S3接続及びファイルの出力に関する設定内容を入力。Pathの部分は、『ファイル名』及び『フォルダパス/ファイル名』の形式で指定する必要がありそうです。

td-to-s3-05

設定内容を確認後、[Run]を実行。

td-to-s3-06

処理実行後、Treasure Data管理コンソールの[Output]を確認してみます。アップロードが正常に終了してそうですね!

started at 2014-12-05T06:57:34Z
14/12/05 06:57:41 WARN conf.Configuration: org.apache.hadoop.hive.conf.LoopingByteArrayInputStream@5bbb2804:an attempt to override final parameter: mapreduce.input.fileinputformat.split.minsize;  Ignoring.
Hive history file=/mnt/hive/tmp/5315/hive_job_log_cb10fe79-a8f6-44b3-b8cb-2fc53b4e1a14_1767325702.txt
**
** WARNING: time index filtering is not set!
** This query could be very slow as a result.
** Please see http://docs.treasure-data.com/articles/performance-tuning#leveraging-time-based-partitioning
**
finished at 2014-12-05T06:58:04Z
14/12/05 06:58:08 INFO result.ResultWorker: Data size: 109,662 bytes (compressed)
14/12/05 06:58:08 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
14/12/05 06:58:08 INFO compress.CodecPool: Got brand-new decompressor [.gz]
14/12/05 06:58:08 INFO result.AbstractFileResult: Formatting the result file with CSV format
14/12/05 06:58:09 INFO result.S3Result: Started sending result to s3
14/12/05 06:58:09 INFO result.S3Result: Upload successful

対象のS3バケットの中身を確認してみます。ちゃんとアップロードされていました!

td-to-s3-07

ファイルの中身もこのようになっております。

$ wc td-www_access.csv
    5001   68386  973897 td-www_access.csv
$ vi td-www_access.csv
access_time,access_host,access_path,method,referer,status_code,access_agent,access_user,access_size
2014-10-31 09:40:23,128.216.140.97,/item/sports/2511,GET,"http://www.google.com/search?ie=UTF-8&q=google&sclient=psy-ab&q=Sports+Electronics&oq=Sports+Electronics&aq=f&aqi=g-vL1&aql=&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&biw=3994&bih=421",200,"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7",-,95
2014-10-31 09:40:22,224.225.147.72,/category/electronics,GET,-,200,Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0),-,43
2014-10-31 09:40:20,172.75.186.56,/category/jewelry,GET,-,200,Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),-,79
2014-10-31 09:40:18,196.183.34.70,/search/?c=Electronics+Games,POST,-,200,Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.1) Gecko/20100101 Firefox/10.0.1,-,86
:
:

コマンドラインベースでの実行

ちなみにtdコマンドでも、以下の様に指定を行う事で実行が可能となっています。コマンドライン実行環境の整備については冒頭御紹介したTD→Redshift連携エントリを御参照ください。

$ td query \
> --result 's3://<アクセスキーID>:<シークレットアクセスキー>@/treasuredata/www_access/td-www_access-from-tdagent.csv' \
> -w -d sample_db \
> "SELECT TD_TIME_FORMAT(time, 'yyyy-MM-dd HH:mm:ss', 'JST') AS access_time, HOST AS access_host,  PATH AS access_path, method referer, code AS status_code,  agent AS access_agent, USER AS access_user, SIZE AS access_size FROM www_access;"
Job 18094279 is queued.
Use 'td job:show 18094279' to show the status.
:

まとめ

以上、8日目のエントリをご紹介しました。明日9日目(12/9)はtatsu-yamさんによるエントリです。

では明日もお楽しみに!

参考情報: