TD & AWS連携:Treasure Dataの結果をAmazon S3に書き出す
このエントリは、以下アドベントカレンダー『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]をクリック。
[Result Export]という設定項目欄に[Add]というボタンが有りますので、そこをクリック。
エクスポート先の一覧が選択可能となっていますので、『S3/Riak CS』を選択。
S3接続及びファイルの出力に関する設定内容を入力。Pathの部分は、『ファイル名』及び『フォルダパス/ファイル名』の形式で指定する必要がありそうです。
設定内容を確認後、[Run]を実行。
処理実行後、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バケットの中身を確認してみます。ちゃんとアップロードされていました!
ファイルの中身もこのようになっております。
$ 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さんによるエントリです。
では明日もお楽しみに!