任务二 人物类与娱乐类关联优化分析
标签(空格分隔): 一找
任务描述
根据人物ID,娱乐ID,关联两类在界面显示。
具体方案为:
1.根据娱乐类节目的相关人员:导演、演员、编剧的人物名字(t_movie_douban表) 在人物类(t_people_baike_info) 中文名、英文名、别名 进行查找。
2.可根据娱乐类节目 的名称、年份、导演等信息在yeezhao_dolphin_baike hbase表进行匹配检索。
hbase 表:
yeezhao_dolphin_baike
rowkey | crawl:text
baike|17744 | 网页html内容
3.人物ID、娱乐ID关系输出内容写在mysql t_people_movie2表里。
实现方案
- 用正则表达式对名字进行处理,把所有多余字符(一些标点符号)都转成#,最后再统一去掉
分为两个方法:
- parseMovieTableName 处理电影表人物姓名
- parsePeopleTableName 处理人物表人物姓名
-
把人物表的人物姓名读入一个HashMap
peopleTable
中, key是人物姓名, value是人物信息结构体。 -
将电影表的人物姓名放入一个RDD
movieRDD
中 -
遍历电影人物表
movieRDD
,每遍历一个名字就去peopleTable
中查找,如果找到,则建立联系
代码
代码位于com.yeezhao.dolphin.crawler.people
下的PeopleEntertainRelationCrawler
类
遇到问题
- 出来的结果表有很多空名字或者数字名字
原因:
1)人物表、电影表各有一套处理名字的规则,人物表不小心调用了电影表的规则,导致很多人名没有被正确处理。
2)电影表中有些名字带括号,而括号之间有空格,我没有去除那些空格,导致空格被加入hashmap
解决方法是 对每个解析完的token再trim一次
详情见 任务 人物与娱乐类关系表问题跟进