招聘网站技术类词频分析_第二版

目标:
大数据项目练习
需求:
从招聘网站上(暂定智联招聘)爬取招聘信息,通过词频统计,分析企业对IT人才需求
使用框架:
平台:阿里云
爬虫:scrapy
https://docs.scrapy.org/en/latest/index.html
中文分词:HanLP中文分词
https://github.com/hankcs/HanLP
日志收集:Flume
数据计算平台:Hadoop
流程
1.通过爬虫爬取指定岗位的招聘信息,生成待处理文件
2.使用Flume定期收集文件
3.使用spark做为数据处理平台
4.在spark中使用HanLP做中文分词工作
5.使用shell做工作流调度
6.实现半自动化处理

开发过程遇到的问题
1.由于是从网页上爬内容,所以遇到了一个无法使用trim去掉的空格,UTF-8编码的空格(194 160),解决方法:

byte[] utf8Space = new byte[]{(byte) 0xc2, (byte) 0xa0};
String mSpace = new String(utf8Space, "utf8");

//[-62,-92]空格去除
word = word.replaceAll(mSpace,"");

2.HanLP在本地模式下运行的很好,但是在集群模式下存在一些问题
在集群模式下,在代码中动态添加自定义分词无效,自定义分词只能以添加自定义分词文件的形式存在
①hanlp.properties需要放到spark的conf目录下
②修改hanlp.properties中的root指向linux的本地存储字典信息的文件夹
③集群上所有的机器都需要完成步骤②
④当自定义分词词典更新后,删除custom文件夹下的.bin文件,自定义分词才会生效

3.flume使用的是spooldir模式,在此模式下,有一个变量要注意,因为我希望整行读入数据,在spark中也是默认为每行为一条记录的,所以要保证flume在将数据传输到hdfs是数据的结构保持不变。

LINE有个设置每行字符个数的属性:deserializer.maxLineLength,默认是2048,大于这个字符数的行将被截断。

修改方法

agent1.sources.spooldirSource.deserializer.maxLineLength =1048576

设一个比较大的上限,保证每行数据不会被截断。

4.crontab使用

crontab -e

进入编辑界面,以下代码用来实现每天定时启动任务脚本

53 13 * * * /home/hadoop/lib/start_tech_analyze.sh &>/home/hadoop/data/tech_analyze_log.txt 2>&1

①使用crontab时,一定要加上输出内容的重定向&>/home/hadoop/data/tech_analyze_log.txt 2>&1,否则一方面看不到输出结果,另一方面crontab会默认输出到/var/mail/$user下,越攒越多。
②使用crontab时,执行脚本在默认情况下是不会加载用户的环境变量的,所以要在脚本中加载用户环境变量

. ~/.bash_profile

③crontab操作

$ service crond start //启动服务
$ service crond stop //关闭服务
$ service crond restart //重启服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值