みなさん、元気にMapReduceしてますか?

EnterpriseZine / 2013年1月9日 0時0分

図7: SQL Server 2008 R2にデータを取り込み、Reporting Servicesでチャートを表示

前回はツイートに含まれる単語をカウントしたものの、その出力結果はどの単語がたくさん使われているのかがそのままではよくわからないものでした。今回は出現数が多い単語が一目でわかるようにMapReduceでキーを降順ソートする手順を紹介し、さらに追加の情報を加えて分析を続けます。

 みなさん、元気にMapReduceしてますか?HadoopのMapReduceをJavaで書くのはとっつきづらい、アドホックな処理に向かない、といった欠点があるため、それを克服するためのプロダクトがいろいろとあります。HiveやPigはMapReduceを楽にコーディングするための工夫ですね。最近ではClouderaからImpalaというプロダクトが出てきました。これはHiveの文法(HiveQL)が使え、かつMapReduceをせずに高速にクエリを実行できるという優れものです。新しいプロダクトが出てくるとわくわくしますね!でも本連載では今回もMapReduceをゴリゴリ書いていきます。よろしく!

 

 なお、今回は扱うソースコードが多いため、弊社Webサイトからソースコードをまとめてダウンロードできるようにしています。興味がある方は、弊社Webサイトの右上にある検索窓で「HadoopでTwitterを分析してみた」と検索してみてください!

■ソートはどこで行っているの?

 前回作成した処理をおさらいしてみましょう。Mapフェーズでツイートは単語ごとに分解され、単語をkey、そのツイート内での出現回数をvalueとしたkey-valueペアでShuffleフェーズへと送られます。Shuffleフェーズでは各Map処理(Mapper)から送られてきたkey-valueのデータをkeyごとにまとめ、Reduceフェーズに送ります。この際、Reduce処理(Reducer)が複数あれば、各処理のデータ量が偏らないように分散してデータを送ります。Reduceフェーズではkey単位で送られてきたvalueのコレクションをすべて足し上げてkeyと共に出力します。

 このように、MapReduceではShuffleフェーズの際にデータがkey単位でまとめられます。これを行うためにshuffleフェーズでは自動的にkeyによるソートが行われます。よって、この自動ソートをうまく利用すればきれいにソートされた出力結果が得られそうです。

  • 前のページ
    • 1
    • 2
  • 次のページ
EnterpriseZine

トピックスRSS

ランキング