😁!!!!!!!

[Treasure Data][Redash]Digdagとembulkを使いこなせば驚異的な分析基盤が出来上がる!!

前回分析基盤のお話をしましたが、Digdagでembulkを使ってS3にあるログをBigqueryに飛ばす場合、
過去ログは以下のように、日付ごとに設定ファイルを作り、$ digdag runをしなければなりません。

さすがに3ヶ月前とかは手動でミスなどありそうで。。。

つらああああああああああああああああああああい!!

というわけでシェルスクリプトでv0.1作ってみましたぜ!


■digdag-run.sh

まず3行目はスクリプトで実行時にエラーが出るとそれ以下は処理しないようにしてます。(さすがにpushとかされたら困る…)5行目~20行目では日付を定義する場合は引数を使ってコマンドラインから渡してあげるといいとセンパイに指摘されたのでいい感じになりました。(指定の仕方が間違っているとエラーも出るように!!)基本今日から取るlogに関しては手動で作成して25行目のrunからのpushをすればスケジューリングされるので、ややこしくないですが!36行目からは過去ログを引数に渡す処理を書かないとあかんのでfor文でぶん回します。39行目では変数からのsedで正規表現をしてます。41行目からは上記に書いてあるdigdagファイルをぶち込んで、さらに日付ごとにファイル化してます。51行目runして日付ファイルを抹消しています。52行目.digdag/status配下を消していますが、理由としては何回もrunするとエラーが出るのでキャッシュを消しているためです。


■run digdag-run.sh

とりあえず2018/05/01~2018/05/08までをぶち込んでみます。

BigQueryに入ってる!!😝


■まとめ

v0.2では今日以降と過去分は関数化して別々にして、
getopts引数を使ってオプション対応からの日付範囲指定が
文字列判定になっているので日付として範囲指定できるように目指します!
むしろCircleCIで早期発見したほうがいいんじゃないの😅
もっといい方法あったら教えてくだせえええ!

早速!!

参考
https://shellscript.sunone.me/parameter.html

カテゴリー: digdagembulk

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニア勉強会なども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中である。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください