weblogこの広告は、90日以上更新していないブログに表示しています。Streamingは紹介されていましたが、私のほうではより初心者向けの基本的な内容を記述しておきたいと思います。Sparkはインメモリで動作する柔軟なバッチエンジンです。Sparkで書いたバッチが動作するものです。Streamingは主に以下の3つの機能を提供しています。各種ストリームデータを取得するためのコネクタ(Receiver)を提供するストリームデータをSparkのRDDのように扱えるDStreamという機構を提供する定期間隔でバッチを実行する機構を提供する(JobScheduler)一点目はストリームデータを取得する仕組みです。3日目の記事のように自分で用意することも可能ですが、既にHDFS、Flume、Kafka、Twitterと接続するコネクタが用意されています。二点目はストリームデータをSparkで利用するRDDと同じ扱いができるようにDStreamというデータ機構を提供しています。これは実装上ではほとんどRDDとは別物なんですがRDDに対する操作とほぼ同じことができるようになっています。最後は定期間隔でJobを実行するための仕組みです。Streamingの動作イメージとして全文検索エンジンを考えてみます。DBにあるものを検索するのではなく、ログにSQLを吐き出してそれをストリーミング処理してElasticSearchに突っ込みます。イメージは以下の感じです。今回のアプリは簡単にElixirで書いたものCRUD時にSQLログを出力しています。Fluentdについては説明する必要はないかとおもいます、今回はfluent-kafkaプラグインを利用してKafkaに書き出しています。Streamingの実装を見ていきます。実装してみる最初に今回書いたコードをGithubにあげてますので気になる方はみてみてください。pochi/spark-streaming-kafka-sample書いたソースコードを早速見てみます。}}まず、scのとこまではSparkとかわりませんが、その後にStreamingContextを作っています。第二引数には間隔を渡してあげます。logs...ではKafkaからデータを取ってくるコネクタ部分を記載しています。これでfluentdから送られてKafkaに保存されているデータが取得できます。その後は各ログをElasticSearchに保存しています。ここでSparkSQLを利用しているのはFluentdから送られてきたjsonをElasticSearchに入れるときにjson構造体と認識させるために利用しています。実行するには以下のどちらかを実行します。target/scala-2.10/elastic-assembly.jar実行すると10秒間隔でログをElasticSearchにいれていることが分かります。Streamingを利用することができました。いえこれを試したときは日本語記事もないのでソースコード読みながら進めていき結構時間がかかってしまいました。Streamingが利用される一助になればうれしいです。月別アーカイブはてなブログをはじめよう!POCHI_BLACKさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。