2015年11月29日現在、AzureのHadoopサービスであるHDInsightはWindowベースのものしか無く、「うーん」という感じでしたが、一方、簡単に(sshトンネリング無しに)Zeppelinやjupyterが使えるということで、ならば、コンソールいらないな・・・と思い試して見ました。
##やりたいこと
- HDInsightでSparkの使い方を調べる
- Zeppelinを使ってみる
- jupyterを使ってみる
- Power BI(MSのBIツール)との連携を確認する
せっかくAzureなので、PowerBIと連携を確認してみます。
###参考
基本、下記の記事を参考にしました。最近のMSの記事はまとも。やっと開発者が書くようになったからでしょう。
##準備
Azureのアカウントの取得が必要ですが、省きます。
「Azureなんか使えるか!」っていう方はこの機会にどうぞ。
##Sparkクラスターの構築
Sparkクラスタの構築は簡単です。が、個人的には難が2つ。
- Windowsベースであること
- 他のサービスを標準で共存できない?こと(PowerShellとかで確認すると動くのかな?)
早くLinuxベースのが欲しい(Linuxはメールくれたら使わせてやる的なメッセージがあったので期待)。
createを押してしばらく待ちます。
##Sparkの利用
###Sparkクラスタの管理画面
20分くらいでプロビジョニングが完了します(Linuxと変わらない)。
作成したサービスを選択しURLをクリックするとsparkの画面に移動します(LinuxだとここでAmbariベースの管理画面に移動します)。
###Sparkの画面へ
いろいろメニューがりますが、Notebooksを選択します。
###Notebooks
標準でjubyterとZeppelinが利用できます。素晴らしい!Notebookとは新しい概念だが、使ってみればわかる。
まあ、Hueの高度版みたいな。
##Zeppelin
###Zeppelin TOP
ZeppelinのTop。なんとMacのSafariではおそらくJSのエラーか何かでConnectedになりませんでした!ChromeはOK。
いつもはChromeなので問題はりませんが。。。
###Notebookの作成
新しいNotebookを作成します。
###Notebookへのアクセス
作成したNotebookには、+Create New noteのメニューからアクセスします。。
###スクリプトを書く(テーブル定義)
標準で表示されているコンソール行に実行したスクリプトを書きます。今回は、ここのコードを利用させてもらいました。
テストデータを元にテーブルの定義をやります。
###スクリプトを書く(SparkSQLを書く)
次にSparkSQLを実行してみる。
いろいろな形式で結果を見ることができる。
Notebookはこのように分析のブロセス(コード)+結果を保存しておける。今風。
##jupyter
###jupyter TOP
次にjubyter。基本的にZeppelinと概念は同じだが、その名の通りpythonを利用する。
グラフ表示とかはできない。新規Notebookを作成します。
Power BIとの連携の元データを作りたいので、[ここ](https://azure.microsoft.com/ja-jp/documentation/articles/
###Notebook
hdinsight-administer-use-management-portal/)を参考に進めます。
基本コピペ。Hive Tableとして保存しておくとPower BIからアクセスできるようです。
##Power BI
###Power BIサイトへのログイン
Power BIのサイトのアクセスし、アカウントを取得します。
###データ取得先の選択 1
Sparkにアクセスするには「データの取得」を選択します。普通はダッシュボードの左下にあるはずです。
###データ取得先の選択 2
データのインポートまたは接続からデータベースを選択します。
どうやらフリー版ではSparkにアクセスできないようです。今回はProの60日無償期間というのを利用してみました。
###Sparkサーバの指定
最初に管理画面でみたURLを入力します。
###ID, PWの入力
クラスタ設定の時に入力したIDとPasswordを入力します。標準のIDはadminでした。
###読み込み完了
しばらく待つとデータセットにsparkが読み込まれ?ます。
###読み込みテーブルの確認
右ペインのフィールドにテーブルが読み込まれています。
###レポートの作成
可視化してみます。
一通り試せました。
##その他
###Webアプリケーションからクエリを投げたい
いくつか方法があるようですが、まだ調べきれていません。誰か教えて。
###パフォーマンスチェック
自分のデータでSparkのパフォーマンスチェックをしてみたい。特にHive, Impalaとの比較。