2015年10月20日 星期二

第19章 使用Apache Zeppelin資料視覺化指令整理

Zeppelin由NFLAB開發提供了web介面,類似ipython的notebook,可做為資料分析與資料視覺化,支援Apache Spark Scala, Apache Spark Python, SparkSQL, Hive, Markdown and Shell。Zeppelin web介面與之前章節所介紹的spark-shell相同,都可以輸入Spark指令,並且立刻回應。但是它比spark-shell提供更多功能。

撰寫本書時Zeppelin,未提供binary版本,所以必須要自行編譯。
然而在zeppelin-0.5.6 已經提供binary版本,不需要自行編譯,請依照下列步驟安裝:
下載Zeppelin
在終端機,輸入下列指令
請下載zeppelin 0.5.6版本,不要下載zeppelin 0.6.0與0.6.1版本,筆者測試有一些問題,可能是Spark版本有相容問題  
連線至 zeppelin網站下載 zeppelin-0.5.6-incubating-bin-all.tgz
http://zeppelin.apache.org/download.html
Ubuntu預設的下載目錄在: ~/下載
cd ~/下載
tar zxvf zeppelin-0.5.6-incubating-bin-all.tgz
Apache Zeppelin安裝
在終端機,輸入下列指令
sudo mv zeppelin-0.5.6-incubating-bin-all /usr/local/zeppelin
sudo chown -R hduser:hduser /usr/local/zeppelin
cd /usr/local/zeppelin
ll
Apache Zeppelin設定
Apache Zeppelin的設定檔,都是儲存在conf目錄,其中最主要是zeppelin-env.sh。在conf目錄有zeppelin-env.sh.template樣板檔案,您可以先複製樣板檔案再修改。 請在終端機輸入下列指令。
複製zeppelin-env.sh.template樣板檔案
cd /usr/local/zeppelin/conf/
ll
cp zeppelin-env.sh.template zeppelin-env.sh
編輯zeppelin-env.sh
sudo gedit /usr/local/zeppelin/conf/zeppelin-env.sh
加入下列內容:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export SPARK_HOME=/usr/local/spark
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export ZEPPELIN_INTP_JAVA_OPTS="-XX:PermSize=512M -XX:MaxPermSize=1024M"
啟動Apache Zeppelin
在終端機,輸入下列指令 Step1 啟動Apache Zeppelin daemon
/usr/local/zeppelin/bin/zeppelin-daemon.sh start
Step2 開啟Apache Zeppelin Web UI介面
瀏覽器連結至下列網址
http://localhost:8080/
Step6 停止Apache Zeppelin daemon
在終端機,輸入下列指令
/usr/local/zeppelin/bin/zeppelin-daemon.sh stop
19.6 使用Zeppelin執行Shell 命令
在終端機,輸入下列指令
Step1 下載並解壓縮資料檔
mkdir -p ~/workspace/zeppelin/data
cd  ~/workspace/zeppelin/data
wget http://files.grouplens.org/datasets/movielens/ml-100k.zip
unzip -j ml-100k
Step3 列出ml-100k檔案清單
請在新的段落,輸入下列shell命令:
%sh
ls -l  ~/workspace/zeppelin/data 
Step4 查看u.user
請在新的段落,輸入下列shell命令:
%sh 
head  ~/workspace/zeppelin/data/u.user
19.7 建立暫存資料表"UserTable"
請在新的段落,輸入spark程式碼
Step1 輸入spark程式碼
val userText= sc.textFile("file:/home/hduser/workspace/zeppelin/data/u.user")
case class UserTable(id:String,age:String, gender:String, occupation : String,   zipcode : String)
val userRDD = userText.map(s=>s.split("\\|")).map( s=>UserTable(s(0),s(1),s(2),s(3),s(4)))
userRDD.toDF().registerTempTable("UserTable")
println("匯入:"+ userRDD.count+"筆")
19.8 使用Zeppelin執行年齡統計Spark SQL
請在新的段落,輸入spark SQL  
Step1 輸入年齡統計Spark SQL
%sql 
select age,count(*) counts 
from UserTable 
group by age 
order by age
19.9 使用Zeppelin執行性別統計Spark SQL
請在新的段落,輸入spark SQL
Step1 輸入性別統計Spark SQL
%sql 
select gender,count(*) counts 
from UserTable 
group by gender
19.10 依照職業統計
請在新的段落,輸入spark SQL
Step1 輸入職業統計Spark SQL
%sql 
select occupation,count(*) counts 
from UserTable 
group by occupation 
order by counts
19.11 Spark SQL加入文字方塊輸入參數
請在新的段落,輸入spark SQL
Step1 輸入加入年齡參數Spark SQL
%sql 
select age,count(*) counts 
from UserTable 
where age>${minAge=20} 
and  age<${maxAge=60}
group by age 
order by age
19.12 加入選項參數
請在新的段落,輸入spark SQL
Step1 輸入選項參數Spark SQL
%sql 
select age,count(*) counts 
from UserTable 
where gender="${gender=M,M|F}"  
group by age 
order by age
19.13 Zeppelin在firefox瀏覽器使用的問題
在下列網址下載chrome  
Step1 下載chrome
https://www.google.com.tw/chrome/browser/desktop/index.html
19.14 同時顯示多個統計欄位
在下列網址下載chrome  
Step2 輸入Spark SQL
%sql
select age,gender,occupation, 
1 counts
from UserTable



以上內容節錄自這本書有詳細介紹:
  Hadoop+Spark大數據巨量分析與機器學習整合開發實戰 http://www.books.com.tw/products/0010695285



沒有留言:

張貼留言