Spark 实时电商数据分析及可视化
Spark 實(shí)時(shí)電商數(shù)據(jù)分析可視化系統(tǒng)是一個(gè)經(jīng)典的大數(shù)據(jù)應(yīng)用項(xiàng)目,技術(shù)棧主要有 Flume、Kafka、Spark Streaming、Flask 等,幫助大家了解和運(yùn)用一些當(dāng)前熱門(mén)的大數(shù)據(jù)處理組件來(lái)親自動(dòng)手搭建一套大數(shù)據(jù)處理平臺(tái)框架和熟悉大數(shù)據(jù)項(xiàng)目的基礎(chǔ)開(kāi)發(fā)流程。
數(shù)據(jù)采集與傳輸
實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將帶領(lǐng)大家通過(guò)實(shí)驗(yàn)樓平臺(tái)所提供的線上環(huán)境實(shí)現(xiàn)項(xiàng)目前期的數(shù)據(jù)采集與傳輸模塊,以此對(duì) Flume 和 Kafka 這兩個(gè)組件在項(xiàng)目中的應(yīng)用有一定的了解。
知識(shí)點(diǎn)
- Flume 和 Kafka 基本操作命令
- Kafka 中 Topic 的創(chuàng)建
- Flume 作為 Kafka 數(shù)據(jù)源的配置
- Zookeeper、Kafka、Flume 整合使用
- Flume 與 Kafka 整合的優(yōu)點(diǎn)
- 數(shù)據(jù)消費(fèi)
技術(shù)介紹及其在項(xiàng)目中的運(yùn)用
Zookeeper 簡(jiǎn)介
為分布式應(yīng)用提供支持的一種協(xié)調(diào)分布式服務(wù),項(xiàng)目中主要用于管理 Kafka。除此之外還可提供統(tǒng)一配置管理、域名集中訪問(wèn)、分布式鎖和集群管理等服務(wù)。
Flume 簡(jiǎn)介
一種日志采集系統(tǒng),具備高可用、高可靠和分布式等優(yōu)點(diǎn),可定制各類數(shù)據(jù)發(fā)送方,用于數(shù)據(jù)的收集;傳輸過(guò)程中,可對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并可定制數(shù)據(jù)接收方,具備事務(wù)性,只有當(dāng)數(shù)據(jù)被消費(fèi)之后才會(huì)被移除,項(xiàng)目中接收方定制為 Kafka。
在使用 Flume 的時(shí)候,可編寫(xiě)自定義的過(guò)濾器進(jìn)行初次的數(shù)據(jù)清洗,減少后期 ETL 的壓力,但是此項(xiàng)目用的數(shù)據(jù)集較為簡(jiǎn)單,僅需后期簡(jiǎn)單清洗即可,如果對(duì)這方面感興趣的同學(xué)們可以去自行學(xué)習(xí)后,將過(guò)濾器加進(jìn)此項(xiàng)目中測(cè)試。
Kafka 簡(jiǎn)介
一種高性能分布式消息隊(duì)列系統(tǒng)組件,具有數(shù)據(jù)持久化、多副本備份、橫向擴(kuò)展和處理數(shù)據(jù)量大等特點(diǎn)。Kafka 需要部署于 Zookeeper 同步服務(wù)上,用于實(shí)時(shí)流式數(shù)據(jù)分析。項(xiàng)目中用作存放 Flume 采集的數(shù)據(jù)。Kafka 中也存在攔截器機(jī)制,可對(duì)傳入的消息進(jìn)行攔截和修改。
Flume 與 Kafka 結(jié)合使用的好處
- 實(shí)際項(xiàng)目開(kāi)發(fā)中,由于數(shù)據(jù)源的多樣性和數(shù)據(jù)的復(fù)雜性,如采用構(gòu)建多個(gè) Kafka 生產(chǎn)者、通過(guò)文件流的方式向主題寫(xiě)入數(shù)據(jù)再供消費(fèi)者消費(fèi)的話,很不方便。
- 進(jìn)行實(shí)時(shí)數(shù)據(jù)處理時(shí),由于 Flume 的數(shù)據(jù)采集速度過(guò)快,數(shù)據(jù)處理過(guò)慢時(shí),可能會(huì)發(fā)生數(shù)據(jù)的堆積或者丟失,此時(shí)可把 Kafka 當(dāng)做一個(gè)消息緩存隊(duì)列,用于存放一段時(shí)間的數(shù)據(jù)。
- Kafka 屬于中間件,可降低項(xiàng)目耦合性,使某模塊出錯(cuò)時(shí)不會(huì)干擾其它組件。
源數(shù)據(jù)
源數(shù)據(jù)為用戶行為日志數(shù)據(jù)集中截取的 10w 條記錄,日志字段定義如下表所示:
| userId | 用戶 id |
| goodsId | 商品 id |
| catId | 商品類別 id |
| sellerId | 賣(mài)家 id |
| brandId | 品牌 id |
| month | 交易月份 |
| date | 交易日期 |
| action | 用戶操作行為:{0:點(diǎn)擊, 1:加入購(gòu)物車, 2:購(gòu)買(mǎi), 3:關(guān)注} |
| ageLevel | 客戶年齡段:{1:age<18, 2:18~24, 3:25~29, 4:30~34, 5:35~39, 6:40~49, 7 和 8: age>=50, 0 和 NULL:未知} |
| gender | 性別:{0:女, 1:男, 2 和 NULL:未知} |
| province | 省份 |
下載?test.csv?測(cè)試數(shù)據(jù),考慮到運(yùn)行環(huán)境內(nèi)存,數(shù)據(jù)量不是很大,如果使用自己機(jī)器進(jìn)行實(shí)現(xiàn),可以去網(wǎng)絡(luò)上找一份比較大數(shù)據(jù)量的數(shù)據(jù)集。
cd /home/shiyanlou/Desktop # 測(cè)試數(shù)據(jù)拉取 wget https://labfile.oss.aliyuncs.com/courses/2629/test.csv數(shù)據(jù)具體格式如下圖所示,字段排列順序按上表。
預(yù)期成果
結(jié)合提供的 Spark 開(kāi)發(fā)環(huán)境,開(kāi)啟 Flume 采集端后,Kafka 的控制臺(tái)消費(fèi)者能夠不斷的消費(fèi) Topic 中的數(shù)據(jù),在命令窗口中進(jìn)行顯示。
以上內(nèi)容來(lái)自課程《Spark 實(shí)時(shí)電商數(shù)據(jù)分析及可視化》,通過(guò)課程可以學(xué)到:
點(diǎn)擊鏈接,可學(xué)習(xí)完整課程哦!前二章免費(fèi)試學(xué)!
總結(jié)
以上是生活随笔為你收集整理的Spark 实时电商数据分析及可视化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微软的 SQL Server 你学会了吗
- 下一篇: Go 语言:我那么值钱,我骄傲了吗?