招聘網站技術類詞頻分析_第一版
目標:
大資料專案練習
需求:
從招聘網站上(暫定智聯招聘)爬取招聘資訊,通過詞頻統計,分析企業對IT人才需求
使用框架:
平臺:阿里雲
爬蟲:scrapy
https://docs.scrapy.org/en/latest/index.html
中文分詞:結巴中文分詞
https://github.com/fxsjy/jieba
日誌收集:Flume
資料計算平臺:Hadoop
流程
1.通過爬蟲爬取指定崗位的招聘資訊
2.使用結巴分詞對招聘資訊進行分詞,生成待處理檔案
3.使用Flume定期收集檔案
4.使用MapReduce完成名詞過濾與統計等工作
5.使用Hive完成資料入庫
6.通過Hue展示資料
進度記錄
1.Scrapy安裝
沒有再Windows下安裝Scrapy,原因是看到網上好多文章說在Windows下配置環境十分麻煩,所以直接在CentOS7下安裝了
yum -y update
yum install gcc libffi-devel python-devel openssl-devel
yum groupinstall -y development
yum install libxslt-devel
yum install python-setuptools
easy_install pip
easy_install lxml
pip install scrapy
執行scrapy startprojcet xxx如果出錯的話,我這裡是因為twisted的版本不正確,執行以下命令,安裝指定版本的twisted就可以了。
sudo pip install twisted==13.1.0
啟動爬蟲的方法
scrapy crawl xxx
2.安裝結巴分詞
easy_install jieba
結巴分詞可以新增自定義字典便於修正錯誤的分詞
3.在資訊收集階段
①使用結巴分詞對招聘資訊進行詞語分割,此時對資料進行預處理,將標點符號(這裡要考慮到全形和半形標點)和數字都去除掉,然後形成的每條招聘資訊的格式為:列以“\t\t”分割,切出的詞以”\t”分割
這裡的分割不能以,等在招聘資訊中可能出現的符號做分割,否則會出現識別錯亂的問題,也不能以空格分割,因為有些技術的英文描述可能包括空格。
title url 切割後的招聘資訊
xxxx http://xxxx xxx yyy zzz xxx
②可以以多個關鍵字作為招聘資訊收集的根頁面,例如我選取了“Spark”,“hadoop”,“大資料”。把這些url設定為start_urls,但是這樣就會出現搜尋重複的問題,所以需要用bloomfilter對url進行過濾去重。
安裝bloomfilter的方法
sudo pip install pybloomfiltermmap
bloomfilter的使用方法參考以下blog:
http://blog.csdn.net/zcc_0015/article/details/50608063
③在專案裡我為了不爬到太久遠的資料,所以在爬蟲中設定了頁數限制,當達到頁數限制後,計數器歸零,爬蟲從下一個start_url開始重新爬資料。
4.使用Flume手機爬蟲爬下來的資料,匯入到hdfs中
①flume的安裝比較簡單,只需要解壓,配置conf目錄下的flume-env.sh中的JAVA_HOME即可
②要注意的是flume對Java的版本要求,由於我裝的是Java7,所以Flume最高只能用1.6的,1.7以上需要Java8
③測試flume是否能夠正確執行在bin目錄下執行
flume-ng version
④flume的使用完全依賴於配置檔案
agent1.sources = spooldirSource
agent1.channels = fileChannel
agent1.sinks = hdfsSink
agent1.sources.spooldirSource.type=spooldir
agent1.sources.spooldirSource.spoolDir=/home/hadoop/PyWorkspace/myspider/data
agent1.sources.spooldirSource.channels=fileChannel
agent1.sinks.hdfsSink.type=hdfs
agent1.sinks.hdfsSink.hdfs.path=hdfs://hadoop000:8020/flume/cys
agent1.sinks.hdfsSink.hdfs.filePrefix=%y-%m-%d
agent1.sinks.hdfsSink.hdfs.idleTimeout=3
agent1.sinks.sink1.hdfs.round = true
# Number of seconds to wait before rolling current file (0 = never roll based on time interval)
agent1.sinks.hdfsSink.hdfs.rollInterval = 3600
# File size to trigger roll, in bytes (0: never roll based on file size)
agent1.sinks.hdfsSink.hdfs.rollSize = 0
agent1.sinks.hdfsSink.hdfs.rollCount = 0
agent1.sinks.hdfsSink.hdfs.batchSize = 1000
#Rounded down to the highest multiple of this (in the unit configured using hdfs.roundUnit), less than current time.
agent1.sinks.hdfsSink.hdfs.roundValue = 1
agent1.sinks.hdfsSink.hdfs.roundUnit = minute
agent1.sinks.hdfsSink.hdfs.useLocalTimeStamp = true
agent1.sinks.hdfsSink.channel=fileChannel
agent1.sinks.hdfsSink.hdfs.fileType = DataStream
agent1.channels.fileChannel.type = file
agent1.channels.fileChannel.checkpointDir=/home/hadoop/app/flume-1.6.0/bin/checkpoint
agent1.channels.fileChannel.dataDirs=/home/hadoop/app/flume-1.6.0/bin/dataDir
啟動方法
./flume-ng agent -f ../conf/hdfs.conf -n agent1 -Dflume.root.logger=INFO,console
Flume採用了spooldirSource的模式來收集檔案
spooldirSource源允許您通過將要提取的檔案放入磁碟上的“spooling”目錄中來提取資料。此源將監視新檔案的指定目錄,並在新檔案顯示時解析新檔案中的事件。事件解析邏輯是可插入的。在給定檔案被完全讀入通道之後,它被重新命名以指示完成(或可選地被刪除)。
因為放入檢測目錄的檔案不能被修改,所有爬蟲爬到的資料將先快取在其他目錄當中,但完成資料收集工作之後,再將檔案移動到spooldir資料夾中。將檔案移動到spooldir的操作是在爬蟲的spider_closed()方法中完成的。應該也可以用Kafka的工作流實現。
5.原本想在專案里加入Azkaban實現昨天排程,不過,這個專案實在是有點太簡單了,決定放棄使用框架實現作業排程,用shell應該也能實現。
ps:已經使用shell完成了工作排程
6.使用MR基本實現了原有的功能設想,但是當需要進行擴充的時候,想要實現更復雜的資料處理,用MR就有點複雜了,可以採用MR對源資料進行ETL,再使用Hive來進行資料統計。
7.使用Python進行分詞也存在一些問題,就是爬資料和分詞放在一起之後,生成的資料就是經過分詞處理的,有的時候會出現分詞錯誤的情況,這個時候就需要重新爬一遍資料才能完成新的分詞工作。這點非常的不好,所以應該把分詞工作放在後面,爬蟲只負責收集資料,不負責任何形式的資料處理,這樣,收集來的資料就不用因為修改邏輯而無法使用了。
Hive實現資料分析和Hue的資料展示,暫時擱置。
相關文章
- 技術類視訊教程網站網站
- 技術類網站如何做好網站內容建設網站
- Laravel PHP 框架網站重建技術分析LaravelPHP框架網站
- 技術類書籍中的形容詞
- 物聯網6類技術無線連線技術的分析
- 技術工具網站網站
- 網站技術架構網站架構
- IT技術網站推薦網站
- 技術學習網站學習網站
- 巧拼車網站招聘架構分析師網站架構
- 美女招聘網站現身滬上叫板傳統招聘網站網站
- 分析“詞頻統計“專案程式
- IT技術新名詞
- 大型網站技術架構——核心原理與案例分析(二)網站架構
- 大型網站技術架構——核心原理與案例分析(一)網站架構
- 不錯的技術網站網站
- 【week2】 詞頻統計效能分析
- 大型網站技術架構:核心原理與案例分析筆記網站架構筆記
- 招聘網站爬蟲模板網站爬蟲
- 中文分詞技術中文分詞
- 非常牛叉的技術網站網站
- 【財經類網際網路入口網站】招聘高階Python工程師網站Python工程師
- 西安PHP,技術外包,網站製作,網站開發,網站運維PHP網站運維
- 寬頻無線技術熱點及其走勢分析(轉)
- 大型網站技術架構——2. 網站架構模式網站架構模式
- 大型網站技術架構(二)--大型網站架構演化網站架構
- 大型網站技術架構(五)--網站高可用架構網站架構
- 大型網站技術架構(一)--大型網站架構演化網站架構
- 80iter.com站內技術點分析
- 【技術積累】軟體設計模式【第一版】設計模式
- SEO分析與關鍵詞優化到網站流量提升優化網站
- 臨沂網站最佳化關鍵詞總結分析網站
- 技術名詞解釋
- 花旗隊分詞技術分詞
- 《大型網站技術架構:核心原理與案例分析》讀書筆記網站架構筆記
- NoSQL群線下技術聚會第1期 ——“網站分析”系列沙龍SQL網站
- 【收藏】Java開發者必去的技術網站Java網站
- 大型網站架構利器-CDN技術網站架構