1. 配置Zeppelin使其支持MySQL
Zeppelin原生支持JDBC鏈接。 但是默認的設置是指向PostgreSQL.
一種最簡單的辦法就是直接修改JDBC Interpreter裡面的內容,指向你自己的MySQL實例即可。如下圖演示:
需要設置的有:
default.user
default.password
default.url
default.driver
另外需要注意的是,需要增加MySQL的JDBC artifict。 筆者使用的是:mysql:mysql-connector-java:5.1.38
以上配置好了之後,restart interpreter 使得配置生效即可
2. 小試牛刀
新創建一個NoteBook, 比如叫做 Daily Report,並且確認一下jdbc interpreter已經確認使用。(確認方法參考上一篇文章)
之後就可以調用%jdbc 編寫SQL並將結果展示出來了。
比如:
在這裡面我們可以寫SQL並將數據用餅圖的方式來展現。 同時我們還可以設置一個Title
另外,我們可以將整個作為一個report 分享給其他項目組的同事, 只需要選擇下面的“report”選項
也可以直接將某一個paragraph分享出去(可以自己做一個頁面集成需要的paragraph)
zeppeline-link-to-this-paragraph
3. 繞過的一些坑
不得不說的是Zeppelin還是不夠穩定,還是有一些坑存在。 並且目前筆者並沒有辦法填平,只能繞過去
3.1 創建單獨的mysql interpreter 失敗
筆者曾經嘗試創建單獨的MySQL Interpreter. 但是一直會遇到各種錯誤,比如:
prefix not found
interpreter not found
等等。
繞過去的方案:直接修改JDBC而不是自行新建
3.2 莫名其妙的需要我Login
Zeppelin默認是向0.0.0.0 開發的,並且默認是匿名訪問。
但是有時候Zeppelin一些錯誤配置之後,即使將配置恢復回來也沒法恢復,還是需要我登錄。 問題是我完全沒有設置過賬號密碼。。。
繞過去的方案: 重啟Zeppelin –> 重啟機器 –> 重頭配置
上面三個方案,一個個的試試看 T_T
3.3 展現的柱狀圖,X坐標自己自動排序
也就是說,展示的x坐標的內容的順序,不是按照我們給出的值的順序。
這個問題在0.6.1 上面也並沒有解決。 在GitHub 上面已經有人給出了PR,但是因為有沖突,一直沒有被合並進去。
出現問題的圖如下:
可以看到,我在SQL之中已經強制了 order by count desc, 就是希望展示出來的圖表能夠按照人數進行降序排序。 但是結果是會自動按照key(build_num_oem)進行自動排序。
其原因是:Zeppelin在將數據喂給Pivort.js 進行數據展示的json,沒有考慮到順序。 需要另外增加一個Index 來解決
具體可以參考: https://github.com/apache/zeppelin/pull/83
繞過去的方案: 說服你的客戶這個問題會在將來的不久被解決掉
4. 總結:
Zeppelin是一個非常有潛力的項目。 目前已經能幫助小型團隊解決了不少問題。
但是主要的問題還是穩定性。
希望Zeppelin能長久的完善下去
最後放一張完成之後的效果圖: