Spark 實時電商數據分析及可視化


Spark 實時電商數據分析可視化系統是一個經典的大數據應用項目,技術棧主要有 Flume、Kafka、Spark Streaming、Flask 等,幫助大家了解和運用一些當前熱門的大數據處理組件來親自動手搭建一套大數據處理平台框架和熟悉大數據項目的基礎開發流程。

數據采集與傳輸

實驗介紹

本實驗將帶領大家通過實驗樓平台所提供的線上環境實現項目前期的數據采集與傳輸模塊,以此對 Flume 和 Kafka 這兩個組件在項目中的應用有一定的了解。

知識點

  • Flume 和 Kafka 基本操作命令
  • Kafka 中 Topic 的創建
  • Flume 作為 Kafka 數據源的配置
  • Zookeeper、Kafka、Flume 整合使用
  • Flume 與 Kafka 整合的優點
  • 數據消費

技術介紹及其在項目中的運用

Zookeeper 簡介

為分布式應用提供支持的一種協調分布式服務,項目中主要用於管理 Kafka。除此之外還可提供統一配置管理、域名集中訪問、分布式鎖和集群管理等服務。

Flume 簡介

一種日志采集系統,具備高可用、高可靠和分布式等優點,可定制各類數據發送方,用於數據的收集;傳輸過程中,可對數據進行簡單處理,並可定制數據接收方,具備事務性,只有當數據被消費之后才會被移除,項目中接收方定制為 Kafka。

在使用 Flume 的時候,可編寫自定義的過濾器進行初次的數據清洗,減少后期 ETL 的壓力,但是此項目用的數據集較為簡單,僅需后期簡單清洗即可,如果對這方面感興趣的同學們可以去自行學習后,將過濾器加進此項目中測試。

Kafka 簡介

一種高性能分布式消息隊列系統組件,具有數據持久化、多副本備份、橫向擴展和處理數據量大等特點。Kafka 需要部署於 Zookeeper 同步服務上,用於實時流式數據分析。項目中用作存放 Flume 采集的數據。Kafka 中也存在攔截器機制,可對傳入的消息進行攔截和修改。

Flume 與 Kafka 結合使用的好處

  • 實際項目開發中,由於數據源的多樣性和數據的復雜性,如采用構建多個 Kafka 生產者、通過文件流的方式向主題寫入數據再供消費者消費的話,很不方便。
  • 進行實時數據處理時,由於 Flume 的數據采集速度過快,數據處理過慢時,可能會發生數據的堆積或者丟失,此時可把 Kafka 當做一個消息緩存隊列,用於存放一段時間的數據。
  • Kafka 屬於中間件,可降低項目耦合性,使某模塊出錯時不會干擾其它組件。

源數據

源數據為用戶行為日志數據集中截取的 10w 條記錄,日志字段定義如下表所示:

字段名 說明
userId 用戶 id
goodsId 商品 id
catId 商品類別 id
sellerId 賣家 id
brandId 品牌 id
month 交易月份
date 交易日期
action 用戶操作行為:{0:點擊, 1:加入購物車, 2:購買, 3:關注}
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 測試數據,考慮到運行環境內存,數據量不是很大,如果使用自己機器進行實現,可以去網絡上找一份比較大數據量的數據集。

cd /home/shiyanlou/Desktop
# 測試數據拉取
wget https://labfile.oss.aliyuncs.com/courses/2629/test.csv

數據具體格式如下圖所示,字段排列順序按上表。

預期成果

結合提供的 Spark 開發環境,開啟 Flume 采集端后,Kafka 的控制台消費者能夠不斷的消費 Topic 中的數據,在命令窗口中進行顯示。


以上內容來自課程《Spark 實時電商數據分析及可視化》,通過課程可以學到:

點擊鏈接,可學習完整課程哦!前二章免費試學!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM