E-MapReduce结合DataV进行数据展现
背景
大部分我們的數(shù)據(jù)處理作業(yè)在完成計(jì)算以后,都希望能夠把結(jié)果可視化的展示出來(lái),形成類似每日?qǐng)?bào)表這樣的東西,供大家直觀的查看。
或者能有類似阿里雙11那種實(shí)時(shí)的數(shù)據(jù)大屏效果就更好了
如果自己去做一個(gè)類似的數(shù)據(jù)可視化的系統(tǒng)會(huì)非常復(fù)雜,我這里要介紹的就是E-MapRediuce的處理結(jié)果,如何通過(guò)阿里云已有的DataV工具來(lái)進(jìn)行展示。
它有如下的一些特點(diǎn):
可視化數(shù)據(jù)圖表是實(shí)時(shí)的。
只要數(shù)據(jù)一發(fā)生變化,圖表就會(huì)立刻變化。權(quán)限控制
可以限制只有主子賬號(hào)可以查看,同時(shí)也能指定報(bào)表公開(kāi)給所有人。1. 計(jì)算數(shù)據(jù)
我這里會(huì)列舉2個(gè)場(chǎng)景作為示范,一個(gè)是離線的場(chǎng)景,報(bào)表數(shù)據(jù)每天計(jì)算一次,另一個(gè)是在線的流式場(chǎng)景,報(bào)表數(shù)據(jù)每10分鐘更新一次,介紹他們大致的處理方式
a) 離線場(chǎng)景
示例場(chǎng)景介紹:
用戶通過(guò)日志服務(wù)(SLS)將服務(wù)器的訪問(wèn)日志收集上來(lái),然后投遞到OSS,并起一個(gè)E-MapReduce集群來(lái)進(jìn)行處理。分析出當(dāng)天的pv,uv或其他的業(yè)務(wù)指標(biāo)。
這個(gè)處理過(guò)程請(qǐng)參考這里使用Hive處理服務(wù)器日志
最終能得到需要的結(jié)果hive表。
b) 流式場(chǎng)景
示例場(chǎng)景介紹:
用戶通過(guò)日志服務(wù)(SLS)將服務(wù)器日志收集上來(lái),然后在E-MapReduce集群中,運(yùn)行一個(gè)Spark Streaming作業(yè),對(duì)數(shù)據(jù)進(jìn)行業(yè)務(wù)分析。
這個(gè)處理過(guò)程的詳細(xì)說(shuō)明將在下一篇中詳細(xì)介紹。
2. 報(bào)表數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)
目前DataV還不能直接支持使用HDFS數(shù)據(jù),但是可以支持API接口和RDS(Mysql)的數(shù)據(jù)源。我們這里選用RDS作為我們的數(shù)據(jù)源,當(dāng)然如果你有自己的Mysql數(shù)據(jù)也可以直接使用
創(chuàng)建表
我們需要在數(shù)據(jù)庫(kù)中創(chuàng)建一張表,我們示范創(chuàng)建一張簡(jiǎn)單的pv表,如下
CREATE TABLE `pv` (`page` varchar(32) NOT NULL,`amount` int(11) DEFAULT NULL,PRIMARY KEY (`page`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8其中page是用戶訪問(wèn)的頁(yè)面的id標(biāo)號(hào),amount是該頁(yè)面被訪問(wèn)的次數(shù)。
主鍵是page。
a)離線場(chǎng)景
經(jīng)過(guò)上面的離線計(jì)算我們得到了一張Hive表,我們使用Sqoop將他導(dǎo)入到RDS中去。
sqoop export --connect jdbc:mysql://{ip}:3306/{dbname} --username {user} --password {pwd} --table {tablename} --export-dir {hdfs_dir} --input-fields-terminated-by '\001'這里其他的參數(shù)都好理解,有2個(gè)需要說(shuō)明下:
hdfs_dir
這個(gè)是Hive對(duì)應(yīng)的hdfs路徑,我們?nèi)绾螐腍ive表中得到呢?
我們?cè)趆ive中使用如下命令即可查詢到表對(duì)應(yīng)的HDFS路徑
結(jié)果如下,其中的location后面的值就是我們需要的路徑了:
--input-fields-terminated-by '001'
這個(gè)是默認(rèn)的Hive都會(huì)使用 001 來(lái)做分割符,所以我們需要把每行用這個(gè)分割成多個(gè)字段,然后保存到RDS中。分割出來(lái)的每一個(gè)字段對(duì)應(yīng)RDS中表的每一列
b)流式場(chǎng)景
流式場(chǎng)景就是直接在Spark Streaming中直接寫(xiě)數(shù)據(jù)庫(kù),后續(xù)我們會(huì)寫(xiě)一個(gè)文章來(lái)詳細(xì)介紹這個(gè)過(guò)程。
3. 創(chuàng)建并配置DataV
完成了上面的數(shù)據(jù)庫(kù)準(zhǔn)備和數(shù)據(jù)導(dǎo)入,現(xiàn)在我們就可以開(kāi)始展示這些數(shù)據(jù)了。
登錄DataV
i 創(chuàng)建數(shù)據(jù)源
在首頁(yè)先創(chuàng)建一個(gè)數(shù)據(jù)源,點(diǎn)擊數(shù)據(jù)源新增
這里我選擇rds,其實(shí)mysql和rds是一樣的,你如果是自己的mysql也是一樣配置
創(chuàng)建完成以后會(huì)看到一個(gè)數(shù)據(jù)源
ii 創(chuàng)建項(xiàng)目
然后我們新建一個(gè)項(xiàng)目,由于默認(rèn)的幾個(gè)都是很復(fù)雜的圖,我們只需要一個(gè)簡(jiǎn)單的,所以你需要手動(dòng)的刪除掉這些用不上的組件。這會(huì)花費(fèi)一些時(shí)間。
iii 設(shè)置頁(yè)面
完成以后,我們先設(shè)置屏幕的大小,點(diǎn)擊右側(cè)的“頁(yè)面設(shè)置”,設(shè)置屏幕大小
考慮有各種不同的頁(yè)面,我們先設(shè)置小一點(diǎn),設(shè)置為寬度:800,高度:600
然后“縮放方式”選擇:全屏鋪滿, 不過(guò)會(huì)導(dǎo)致比例有點(diǎn)失真,你可以根據(jù)你的實(shí)際情況進(jìn)行調(diào)整。
iv 添加圖標(biāo)并設(shè)置
我們從常規(guī)圖表中選中“梯形柱狀圖”,并進(jìn)行拉伸,擴(kuò)大到適合的大小。
接著,設(shè)置我們的數(shù)據(jù)綁定到這個(gè)圖上,點(diǎn)擊右側(cè)的數(shù)據(jù)
選擇“數(shù)據(jù)源類型”:數(shù)據(jù)庫(kù)
選擇“選擇數(shù)據(jù)庫(kù)”:一開(kāi)始我們創(chuàng)建的那個(gè)數(shù)據(jù)源
在“SQL”中寫(xiě)語(yǔ)句,以我們的示例為例,我們的數(shù)據(jù)庫(kù)中的pv表有2個(gè)字段一個(gè)是page,代表用戶的訪問(wèn)頁(yè)面id,一個(gè)是amount,代表頁(yè)面被訪問(wèn)的次數(shù)。
我們看到梯形柱狀圖需要x,y兩個(gè)坐標(biāo)軸的數(shù)據(jù),x對(duì)應(yīng)類目也就是我們的頁(yè)面id,y對(duì)應(yīng)值,也就是訪問(wèn)量,我們使用如下的sql來(lái)
這樣就把所有訪問(wèn)頁(yè)面的前十給展示出來(lái)了
類似如下的效果:
然后,如果你的數(shù)據(jù)是動(dòng)態(tài)更新的,那么你可以設(shè)置下面的
“自動(dòng)更新”,設(shè)置一個(gè)合適的頻率來(lái)更新圖標(biāo),每當(dāng)數(shù)據(jù)變化就可以立刻看到。
v 權(quán)限設(shè)置
默認(rèn)情況下,這個(gè)圖表只可以被主子賬號(hào)訪問(wèn)。
如果要被所有人訪問(wèn),在屏幕的右上,有一個(gè)分享按鈕,點(diǎn)擊打開(kāi)后會(huì)產(chǎn)生一個(gè)公開(kāi)的訪問(wèn)地址,所有人都可以訪問(wèn)
總結(jié)
以上是生活随笔為你收集整理的E-MapReduce结合DataV进行数据展现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于C10K、异步回调、协程、同步阻塞
- 下一篇: 拼音u的教案一等奖