2015年4月9日 星期四

[Apache Spark] 有趣的新玩意兒-Apache Zeppelin

enter image description here
圖片來源:https://zeppelin.incubator.apache.org
先前介紹了使用Ipython Notebook來使用PySpark(連結),那麼麻煩的設定就是為了能夠藉由Ipython notebook的介面來使用spark.Ipython Notebook可以讓使用者立即與程式碼互動,對於資料分析或觀察都相當的方便.這麼好用的工具,當然也有大大開發了Spark的版本,但是設定上比較麻煩,就沒有特別介紹.但是好工具總是不寂寞,今天要介紹的Zeppelin,由NFLAB開發,在2015年三月正式加入Apache家族,不但可以直接以Ipython notebook的介面來操作Spark,還有令人驚訝的視覺化功能.

Zeppline的安裝非常簡單(Github
  1. 在本機上使用git clone https://github.com/apache/incubator-zeppelin.git抓下專案.
  2. 如果是ubuntu的環境,請先安裝
    sudo apt-get update
    sudo apt-get install openjdk-7-jdk
    sudo apt-get install git
    sudo apt-get install maven(ubuntu上請安裝3.1.1版本,不然compile會失敗https://maven.apache.org/download.cgi)
    sudo apt-get install npm
  3. 安裝完後進入專案的資料夾中,執行mvn clean package(這邊會幫你連spark一併安裝好,如果要安裝其他版本的spark請參考
  4. 預設安裝是單機的環境,如果要改成分散式環境也請參考官方github,手邊沒有環境可以玩
  5. 執行./bin/zeppelin-daemon.sh start接著連線到htpp://localhost:8080(localhost可以改成ip位置,如果使用的是VM,要連8081 port一起曝露出來)
  6. 連線後畫面如這樣:
    enter image description here
  7. 安裝好後有個教學用的notebook-zeepline toturial點開後可以看到介面
    enter image description here
  8. 有玩過ipython notebook的對這介面一定不陌生,這邊環境跟repl一樣,即時可以看到程式執行結果,右上角的齒輪按下去可以看到提示
    enter image description here
  9. 每個操作視窗中第一行如果沒有設定,或打上%spark就是代表這邊可以直接輸入scala的code(預設已經起了sc(Spark context),如果是spark 1.3.0會預設起了sqlContext
    enter image description here
  10. 如果是%md%sh就是可以在裡面寫markdown或執行shell
  11. 比較特別是的%sql,可以將Spark sql當成真的sql來用,直接輸入sql的commend,更特別的是還會自動圖形化!
    enter image description here
  12. 在使用%sql前,當然還是要將RDD註冊成Table(如果是使用spark1.3.x,需要先將RDD轉成DF,這些在預設範例裡應該都有,或是參考下圖)
    enter image description here
    先前在寫Spark分析的時候,就曾感嘆希望有個可以像ipython notebook這樣方便的工具,可以立即的與資料互動,從zeppline今年進入apache中,可以發現這樣的需求的確受到大家的關注的.而且從Spark最近的改版來看,應該也是希望能夠讓使用者更方便能透過spark來分析資料.Zeppline提供使用者很方便操作的介面,可以直接寫sql code的格式,甚至自動圖形化,可以期待Zeppline之後一定越來方便.