HDFSにファイルを格納

 今度はHadoopがストレージとして利用する分散ファイルシステム「HDFS(Hadoop Distributed File System)」に、今回集計するデータを配置していきます。HDFSにディレクトリを作成し、データファイルをアップロードします。

 まず、Hiveで処理するデータを用意します。サンプルデータは、第1~第2回のPig編で使用した米Amazon.com社の「Amazon review」を用います。このデータは、アメリカのAmazonで取り扱っている商品のレビュー記事を抽出したものです。米イリノイ大学の Nitin Jindal氏とBing Liu氏の手によって一般に公開されており、主にテキスト分析や評判分析の研究などに使われています。

 必要なデータはレビューデータの「reviewsNew.rar」と商品データの「productinfo.rar」です。これらのデータを組み合わせて分析することで、レビュー数の多い書籍や評価の高い書籍などが分かります。

 ダウンロードしたファイルは、rar形式の圧縮ファイルです。rar書庫を解凍して、Hiveで扱う際に余分な文字列を削除しましょう。rar形式の解凍は「unrar」コマンドが使えます。パッケージマネージャや「sudo apt-get install unrar」などでインストール後、

$ unrar e reviewsNew.rar
$ unrar e productinfo.rar
として解凍します。

解析するデータを加工

 解凍すると、「reviewsNew.txt」と「productinfo.txt」の2ファイルが展開されます。このうちproductinfo.txtは、商品のIDである「product_id」を示す番号の前にある空白文字を削除する必要があります。product_idを介してレビューデータと商品データを結びつけられなくなるからです。今回は、展開したファイルproductinfo.txtに対して以下のコマンドを使って編集しました。先頭の空白を削除する正規表現による置換処理です。

perl -p -e "s/^\s+//" productinfo.txt > productinfo_r.txt

 productinfo.txtを加工してできたproductinfo_r.txtを、HDFS配下のディレクトリ「amazon_pro_r」に移動します。このデータには「BREAK-REVIEWED」ではじまるラインが多数含まれています。Hiveを体感するだけなら問題はありませんが、気になる方は読み込み前に、BREAK-REVIEWEDを含むラインを削除すると良いでしょう。

$ hadoop fs -mkdir /user/nikkei/amazon
$ hadoop fs -copyFromLocal reviewsNew.txt /user/nikkei/amazon
$ hadoop fs -mkdir /user/nikkei/amazon_pro_r
$ hadoop fs -copyFromLocal productinfo_r.txt /user/nikkei/amazon_pro_r

 以上でHDFSに格納するデータの準備は完了です。