Skip to content

HDFハンズオン 6: おまけ Zeppelinで可視化

Koji Kawamura edited this page Mar 7, 2017 · 3 revisions

ZeppelinはHDFスタックに含まれる製品ではありませんが、本ハンズオンを実行するうえでデータが可視化できるとより理解が深まるので利用してみましょう。

すでにZeppelinはインストール、起動済で、次のアドレスにWebブラウザからアクセスできます:

http://<host>:8090/

Create new noteをクリックし、新しいノートブックを作成しましょう。名前は何でもOKです。

パラグラフに以下のscalaコードを入力します。SparkでNiFiから出力したStorm処理結果のJSONを読み込み、DataFrameに変換します。 DataFrameはSQLで分析することができます:

import org.apache.commons.io.IOUtils
import java.net.URL
import java.nio.charset.Charset

var df = sqlContext.read.json("/opt/hdf-handson/report/latest.json")
df.show
df.registerTempTable("average_age")

別のパラグラフで以下のSQLを実行してみましょう:

%sql
select * from average_age

次のような結果が得られます。しかし、これだと、棒グラフや円グラフで表示した際に意味のあるグラフにはなりません。

行列を入れ替えたほうがよさそうですね。

これもNiFiで変換してみましょう。

JoltTransformationJSON

Property Value
Jolt Transformation DSL Shift

Jolt Specificationには以下のJSONを設定します:

{
  "*": {
    "$": "[#2].k",
    "@": "[#2].v"
  }
}

すると、元のJSONを次のように配列形式へと変換できます:

{"A":18.33,"B":12.0,"C":19.0,"D":25.0}
[{"k":"A","v":18.33},{"k":"B","v":12.0},{"k":"C","v":19.0},{"k":"D","v":25.0}]

Zeppelinで棒グラフ表示すると、次のように各keyの値をY軸の値として表示できます: