!slug 1350

!date 2014/12/17

!draft false

!tags Amazon Lambda,BaaS,box,enebular,Hive,IoT,Lambda,M2M,MATLAB,PaaS,Postgresql,python,Redshift,Result Output,S3,Salesforce,Tableau,Tableau Server,Toolbelt,transform,TreasureData

!! IoT/M2Mプロジェクトのビッグデータ解析部分にTreasure Data Serviceを利用してみたので勘所をまとめてみます。 ※ちなみに色々と大人の事情を考慮してしがらみのない個人ブログの方にエントリすることにしました。 まずIoT/M2Mプロジェクトは(今のところ)以下のようなケースが多いです。…

IoT/M2Mプロジェクトのビッグデータ解析部分にTreasure Data Serviceを利用してみたので勘所をまとめてみます。

※ちなみに色々と大人の事情を考慮してしがらみのない個人ブログの方にエントリすることにしました。

まずIoT/M2Mプロジェクトは(今のところ)以下のようなケースが多いです。

https://farm8.staticflickr.com/7574/15841257127_ef9dcb9214.jpg

大きく分けると流れるデータをリアルタイムに処理/判断したいストリームデータ処理(App1 -> App2 -> App3)と蓄積したデータを解析したいビッグデータ解析に分かれます。

また、特にRawデータが必ずと言って良いほど圧縮されていたり、データが集約される箇所(ネットワーク的にはGatewayみたいな)がケースバイケースだったり、データの発生頻度が小刻みなのでデータ量が膨大であるなど、そんなのIoT/M2Mに限った話ではないと言われればそれまでなんですが、IoT/M2Mの場合はほとんどの場合これくらい複雑な要件になるというのが特徴かと思います。

特にRawデータですが、古いM2Mプラットフォームから上がってくるログは以下のようなイメージの形式が多いです。

https://farm8.staticflickr.com/7537/16001415426_07225cdcc6.jpg

このログを以下のように行列変換して…

https://farm8.staticflickr.com/7486/16001415336_025f76185e.jpg

IoT/M2Mデータの可視化で求められることの多い散布図に使えるような以下のデータ形式にtransformします。

https://farm8.staticflickr.com/7485/15841442847_cdf37d809a.jpg

行列変換はHiveではできない(と思う)ので変換プログラムを書いたりしますし、要件によってはMATLABでやるような数値計算をトライアル期間は手動で行い、パターン化できるとPythonなどで実装するというものもありました。

このようにIoT/M2Mでは至る箇所にプログラムが散在する可能性が高く、個人的にはAmazon Lambdaでこの辺りの実装が比較的わかりやすくなることを期待していますし、視覚的にも全体を俯瞰できるツールとしてenebularというサービスも作りました(まだAmazon Lambdaのモジュールは作成していませんが勿論作成中です)

こうなると(特にPaaS, BaaS的なところにプログラムしていくと)どうしてもS3経由でTreasure Dataにロードするケースが多くなってきますので、個人的にはToolbeltでやるより更に手軽にS3からロードできる専用の機能が欲しいくらいです。