読者です 読者をやめる 読者になる 読者になる

烏滑稽

ブログはじめました(迫真)

Kafkaアプリケーションのユニットテスト

10日0時を回ってしまった気がしますが Distributed Computing Advent Calendar 12/9 分、書いていきます。寝なければセーフ!
Kafkaアプリケーションのユニットテストについてですが具体的な方法ではなく概論のような形になります。

qiita.com

Kafkaアプリケーション is 何

今回話すKafkaアプリケーションは、Kafka brokerそのものの上で動くなにかのプログラムではなく、
Kafka brokerに対してconsumeしたりproduceしたりするクライアントアプリケーションのことです。
例えば

  • Kafkaから読んだデータをフィルタリングしたり情報を付加した後に別トピックに書き戻すアプリケーション(ETL)
  • Kafkaから読んだデータを集約して結果をKVSなどに書き出すアプリケーション
  • Kafkaから読んだデータを使って異常検知し、何らかのAPIを叩くアプリケーション
  • StormやKafka Streamsのアプリケーション

Kafkaの利用目的がストリーム処理であれデータバスであれ、 クライアントアプリケーションで何かを実現したいからKafkaを使うわけで、基本的にはこれらの開発をすることになります。

続きを読む

東京メトロのオープンデータをElasticsearch + Kibana (5.0.2)で可視化してみる(Java Client)

JJUG CCC 2016 fallブーストークで大谷さんがElastic Advent Calendar枠まだありますって言ってて、勢いで登録してしまった。

qiita.com

実は時間もネタもなかったことに後から気付きつつ速攻でなんかやっていきます!
3時間くらいでなんとかなったらいいな!

何かいいサンプルデータないかなー

電車の遅延傾向とかパッとグラフで見れたらいいなーと思いつき、
以前どこかで聞いた気がして調べて見つけたのが東京メトロのオープンデータです。

東京メトロオープンデータ開発者サイト

東京メトロの路線情報や駅情報をAPIで参照できます。
APIを利用するためには開発者登録をすると最大2営業日ほどでアクセストークンが取得できるとのことだったんですが自分がやったら半日で登録してくれました、ありがたい。
APIは路線IDで路線を検索したりLat Lonで駅検索したりいろいろできるんですが、
とりあえず全路線の現在状況が知りたければ
https://api.tokyometroapp.jp/api/v2/datapoints?rdf:type=odpt:Train&acl:consumerKey=<アクセストークン>
を叩いておけば大丈夫です。公式ドキュメントはなんだかちょっと結構難しく書いてありますがHTTPリクエストでJSON arrayが返ってくるだけです。
レスポンス項目は開発者登録後に読めるドキュメントにありますが、よく読まなくてもとりあえず可視化すればなにかいい感じでわかるでしょう!わかるといいな!

続きを読む

ストリームでのウィンドウ集計:タンブリング(Tumbling)、ホッピング(Hopping)、スライディング(Sliding)ウィンドウ

リアルタイムストリーム処理の話でよく出てくる以下のウィンドウ集計について、パッとわかる日本語の説明がなかったから認識を書いてみた。
各項目最初の2, 3行でつまりなんなのかを説明しようとしているが、それ以降はちょっと細かい話なので混乱したくない場合は見ない方がいいかも。
時間軸での集計前提。

  • タンブリングウィンドウ集計 (Tumbling Window)
  • ホッピングウィンドウ集計 (Hopping Window)
  • スライディングウィンドウ集計 (Sliding Window)

タンブリングウィンドウ集計

一言でいうと「一定時間ごとの集計」。
例えば10秒毎の流れてくるツイートを知りたいといったときにはタンブリングウィンドウ集計を選択することになる。
このウィンドウ関数を起動してから10秒たったらその10秒間のツイート数が、さらにその10秒後にはその10秒間のツイート数が取得できる感じ。
ポイントは1つのイベントは1つのウィンドウにしか属さないということ。「オーバーラップしない」と表現されるかもしれない。

続きを読む