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に格納するデータの準備は完了です。