bigdata_舆情热点挖掘项目

一.公司项目开发特点:

  • 标准的项目开发的时间配比
    • 开发前工作:开发=7:3
  • 互联网公司招人用人做项目的潜规则
    • 招3个人,干5个人的活,给4个人的钱。
    • 项目需求概述
      • 解决什么问题
        • 用户需求->系统需求
      • 输出:prd,产品需求文档
        • 甲方自己写:此要求甲方比较专业
        • 乙方自己写:甲方口述需求,乙方进行整理。
      • 输入:甲方的工作人员表达的需求内容

二.项目需求概述

    1.概念:

做什么事情(宏观描述)

为什么要做(讲清楚原因和价值)

从业务逻辑角度,讲清楚要如何做(微观细节说明,产出prd文档,即Product Requirement Document

明确阶段目标(里程碑,milestone)和验收标准(干成什么样子算ok)

过程管理与风险控制

    2.作用:

  1. 准确勾勒和描绘用户的问题
  2. 便于用户方、需求方、开发者三方沟通交流
  3. 开发人员工作的基础和依据
  4. 确认测试和验收的依据
  5. 产品和开发互相撕逼的依据

3.本项目需求说明书

做什么事情( 宏观描述)

  • 给定一批微博博文数据,构建到hive数据仓库中,挖掘出数据的热点关键词,并能在web页面中显示。

为什么要做(讲清楚原因和价值)

  • 迅速捕捉社交网络内热词,可以作为新闻素材、视频推荐、商品推荐等依据。

从业务逻辑角度,讲清楚要如何做(微观细节说明,产出prd文档,即Product Requirement Document)

  • 给定具有时间连续性的微博文章不低于100万条即可,实际给出2.2亿条。(csv格式)
  • 将文本文件导入到hive的指定微博内容表中
  • 通过nlp(nature language process)分词处理,将一条一条的博文拆解成一个一个的词序列(Term Sequene)。
  • 输入博文
  • 输出词序列
  • 对词序列中的全部元素做词频统计(Term Frequence Statistic)

  • 对词统统计结果做倒排输出,得到舆情热词

  • 将数据推送到mysql指定数据表中

    搭建java web项目,在前端页面中调用后端的数据接口,将数据返回到前端中。

    在前端调用绘图插件,将舆情热词用比较炫的方式显示出来。

    明确阶段目标(里程碑)和验收标准(干成什么样子算ok)

    过程管理与风险控制。

用户需求->系统需求

三.项目需求分析

1.概念:

  • 标准定义
    • 把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。
    • 是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
  • 简化定义
    • 根据PRD文档,从技术层面,去分析项目的模块组成、技术实现、过程管理、风险控制,并确定项目的可行性。

2.作用:

  • 将技术可行性、技术实现难点、工作量、人员分配统筹分析和安排。
  • 为项目研发周期评估和人员按排提供依据
  • 极大的降低项目失败风险

   

3.本项目需求分析说明        书

 三.技术方案与开发计划

1.技术方案

     1.1概念:为解决各类具体技术问题,而提出的系统的解决方法。

      1.2评价技术方案的合格:

     清晰、系统的获取到该技术问题的具体解决方法,并有相应的可行性。

      1.3本项目的技术方案-数据类开发

 

     

2. 开发计划

     2.1概念:

  • 对项目开发进行拆解拆分成相关的模块或技术点,并将其与岗位及其对应的责任人进行匹配对应,并设置相应的限制参数,如开发时间、开始时间、结束时间、负责人、状态等字段,便于项目开发过程中的代码开发、分工协作、进度管控、风险管理。

    2.2评价开发计划的合格:

模块拆分清晰、任务分工明确、进度安排合理,具备一定的可执行性

   2.3:本项目的开发计划

序号

任务模块

任务项

责任人

所需时长

状态

备注

1

源数据准备

确定源数据文件集合

天亮

1天

100%

2

源数据准备

将源数据装载到hive仓库

张三

1天

open

3

热点挖掘处理过程

分词UDF编写

张三

0.5天

open

4

热点挖掘处理过程

生成分词结果表

张三

0.5天

open

5

热点挖掘处理过程

生成wordcount倒排表

张三

0.5天

open

6

热点挖掘处理过程

将表推送到mysql表中

张三

0.5天

open

7

前端web展示

构建springboot项目

张三

0.5天

open

8

前端web展示

加入echarts绘图插件 

张三

0.5天

open

9

前端web展示

前端界面生成

张三

0.5天

open

四.开发细节与风险控制

1.确定源数据文件集合

    • 来源渠道
    • 渠道选择
    • 确定数据集
    • 确定数据文件格式
    • 确定数据结构及Demo数据查看
    • 洞查数据本身
      • 总大小
      • 总文件个数或者说平均文件大小
      • 总记录条数
      • 可预见的最大/最小文件记录数

2.洞查数据本身

将数据传输到hadoop客户端机器中,为数据传输到hive仓库做准备。

总大小

掌握计算方法

准确计算法:看到全部数据后,通过命令求实际大小。

评估计算法:通过对部分数据做精细化计算,然后推导到全局数据。

总文件个数或者说平均文件大小

掌握计算方法

总记录条数

掌握计算方法

可预见的最大/最小文件记录数

掌握计算方法

2.将源数据装载到hive仓库

流程:

    • zip原始数据批量解压
    • 在hive中创建weibo_origin和weibo_product两张同构表
    • 将解压完的明文每天数据文件,按天load到weibo_origin载入原始数据层
    • 数据检验与校正
    • 清洗原始数据表weibo_origin,按天分区插入到weibo_product表中

zip原始数据批量解压:

ls weibo/*.zip | xargs -n1 unzip -d weibo_text/

在hive中创建weibo_origin和weibo_product两张同构表:

#! /bin/bash

db_name=liyingjie

hive -e "
  use $db_name;
  CREATE external TABLE weibo_origin(
mid string,
retweeted_status_mid string,
uid string,
retweeted_uid string,
source string,
image string,
text string,
geo string,
created_at string,
deleted_last_seen string,
permission_denied string
)
comment 'weibo content table'
partitioned by (day_seq string comment 'the day sequence')
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS textfile;

"


#! /bin/bash

db_name=liyingjie

hive -e "
  use $db_name;
  CREATE TABLE weibo_product(
mid string,
retweeted_status_mid string,
uid string,
retweeted_uid string,
source string,
image string,
text string,
geo string,
created_at string,
deleted_last_seen string,
permission_denied string
)
comment 'weibo content table'
partitioned by (day_seq string comment 'the day sequence')
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS orcfile;

"

数据按天分区载入weibo_origin表:

#! /bin/bash

#定义相关变量参数
db_name=liyingjie
csv_root_dir_local=../data/csv_data_dir/
csv_root_dir_hdfs=/tmp/liingjie/weibo_data_dir/
table_name=weibo_origin

#编程实现,将一个csv目录当中的所有csv文件批量加载到hive的指定表的分区当中
csv_file_list=`ls $csv_root_dir_local""*.csv`
#echo $csv_file_list

#遍历本地获取到的csv文件集合
for file_path in $csv_file_list;do
  #echo $file_path
  #将本地csv文件上传到hdfs目录当中
  hdfs dfs -put -f $file_path $csv_root_dir_hdfs

  #将hdfs的csv文件load到hive表的指定分区
  #首先获取到文件的名称,即获取到指定文件的日期
  day_seq=`echo $file_path | awk -F '/' '{print $NF}' | cut -d '.' -f1`
  echo $day_seq
  hive -e "
     use $db_name;
     load data inpath '$csv_root_dir_hdfs$day_seq.csv' overwrite into table
     $table_name partition(day_seq='$day_seq');
  "
done

执行脚本:sh load_to_weibo_origin.sh

3.UDF编写

词统统结果做倒排输出,得到舆情热词

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值