目次
(1)HDInsight環境準備
(2)データの準備、SQL実行方法の確認
(3)データのロードと、抽出・集計の実行
前回は、HDInsightの利用環境の準備が終わりましたので、今回はデータの準備と、SQLの実行方法の確認を行っていきます
データの準備
簡単なGUI操作ができるツールで、今回はファイルをAzureストレージへコピーします。
個人的なおすすめは、Cerebrata の Azure Explorerです。
(シンプルかつ機能十分。疑似的なフォルダー階層の件も、意識する必要ありません)
- 下記サイトより、インストーラーをダウンロードして実行しますhttp://www.cerebrata.com/products/azure-explorer/introduction
- Azureポータルで、キーを確認します左端のメニューより、「ストレージ」をクリックします
次に、「ダッシュボード」をクリックします下段メニューより「アクセスキーの管理」をクリックします表示されたダイアログで、「ストレージ アカウント名」と、「プライマリー アクセス キー」をコピーします - Azure Explorerへ、ストレージアカウントを追加します「Add Account」をクリックしますAccount Nameには、先ほど調べた「アカウント名」を、
Access Keyには「プライマリーキー」を入力します。 - データ格納用にフォルダーを作成します。今回は、MyDataというフォルダーを作成し、その配下にロードしたい単位でフォルダーを作成しました。Hiveでデータをロードするときに指定するのが、ファイル名ではなくフォルダー名となります。そのため、ロードしたい単位にフォルダーを作成しておきます。たとえば、ホスト名やIPセグメント、年月等でフォルダー名決めて作成すると便利だと思います。また、親フォルダー、子フォルダー、孫フォルダーという構成をとった場合ですが、Hiveで指定するときに、親フォルダーを指定した場合に、子や孫フォルダーにあるファイルは含まれません。今回の例でいうと、Hiveで「MyData」を指定した場合に、その配下にあるフォルダー「2015-03」等にあるファイルは含まれません。
個別に、MyData/2015-03/SV02等の指定する必要があります。
- データをコピーしますローカルドライブから、集計対象のテキスト形式ファイルを、先ほど作成したフォルダーへ、ドラッグアンドドロップし、コピーします。
Azcopyコマンドでもいいのですが、注意点として、HDInsightで扱うフォルダー階層が、ファイル名に「/」を含めることで表現された疑似的なものなので、そこを意識する必要がたぶんあります(試してません)
フォルダー階層の説明
https://azure.microsoft.com/ja-jp/documentation/articles/hdinsight-upload-data/
SQL実行方法の確認
HiveQLと呼ばれる、Hiveで使えるSQLは、通常のRDBがサポートするSQLのサブセットになっています。今回は、テキストデータから、ある条件にマッチするデータを抽出(select)します。
まず、HDInsightで、HiveQLを簡単に実行する方法は、2通りあります。
(より自動化を望む場合は、PowershellやREST APIを使う方法もあるようですが試してません)
SQLの実行方法(その1) リモートデスクトップ接続
- クラスターのヘッドノードへリモートデスクトップ接続をします。接続に使用するユーザーは、Hadoopクラスター作成時に指定した、リモートデスクトップ接続用にユーザーになります。
- デスクトップにある、「Hadoop Command Line」のアイコンを実行し、以下コマンドを実行します。%hive_home%\bin\hive詳しくはこちら
SQLの実行方法(その2) Webコンソール
- Azureポータル内から、Webコンソールを選択して実行できます。あまり書くこともなく...詳しくはこちらhttps://azure.microsoft.com/ja-jp/documentation/articles/hdinsight-hadoop-use-hive-query-console/
以上で、データの準備と、SQL実行ができるところまで来ました。次回は、実際の集計を行っていきたいと思います