實驗結果展示
數據集
hour.csv
instant,dteday,season,yr,mnth,hr,holiday,weekday,workingday,weathersit,temp,atemp,hum,windspeed,casual,registered,cnt
1,2011-01-01,1,0,1,0,0,6,0,1,0.24,0.2879,0.81,0,3,13,16
此數據集包含的是從 2011 年 1 月 1 日到 2012 年 12 月 31 日期間每天每小時的騎車人數。騎車用戶分成臨時用戶和註冊用戶,cnt 列是騎車用戶數彙總列。你可以在上方看到前幾行數據。
實驗說明
將數據文件中每小時的騎車人數當做每10秒的使用人數使用,傳入kafka中,由Spark實時讀取並統計時間窗口中的使用人數,再傳回kafka,界面實時展示時間窗口的統計結果
- python 讀入數據集文件,並將使用人數字段每隔0.1s傳入 kafka 隊列a
- Spark 程序每1s 獲取kafka隊列消息,並統計時間窗口爲1s內的使用人數,將返回結果放入 kafka 隊列b
- 由socket.io 構建的web 實時獲取 隊列b裏的消息,並推送圖表展示
- Kafka安裝見之前的文章 Kafka安裝
- Python操作Kafka見我之前寫的文章 Python操作Kafka
- SparkSream實時處理見之前的文章 SparkSream流處理
- 處理結果放回kafka 見 Scala 操作Kafka
SparkStream 實時處理
使用Spark Streaming + Kafka 實現有容錯性的實時統計程序
SparkStreaming項目(實時統計每個品類被點擊的次數)
Flask 搭建簡易Web
Socket.io支持及時、雙向、基於事件的交流,可在不同平臺、瀏覽器、設備上工作,可靠性和速度穩定。最典型的應用場景如:
- 實時分析:將數據推送到客戶端,客戶端表現爲實時計數器、圖表、日誌客戶。
- 實時通訊:聊天應用
- 二進制流傳輸:socket.io支持任何形式的二進制文件傳輸,例如圖片、視頻、音頻等。
- 文檔合併:允許多個用戶同時編輯一個文檔,並能夠看到每個用戶做出的修改。
Socket.io實際上是WebSocket的父集,Socket.io封裝了WebSocket和輪詢等方法,會根據情況選擇方法來進行通訊。