开发细节和风险控制

一、开发细节与风险控制

        开发细节当中及伴随着各种各样的风险,并要及时反馈和处理风险,如果工作量评估、即使难度评估、人员变更、需求变更等等,故我们将两者放在一起,不可拆分

1.开发细节

        共九个开发模块

1.1.确定源数据文件集合

        步骤拆分

                来源渠道

                        自从写网络爬虫采集:研发成本高、不是本职工作

                        公开数据集:五研发成本,公开数据质量高,数据量可大可小,按需获取即可

                        第三方数据买卖公司:无研发成本,需要付费才能获取

                渠道选择

                        搜狗搜验室-http://www.sougou.com/labs/

                        多领域公开数据http://blog.csdn.net/marleylee/article/details/76587354

                        国外的公开数据集-https://site.douban.com/146782/widget/notes/15524697/note/519440833/

                        自行积累的公共数据集-https://mp.weixin.qq.com/s/8whZsvERs6zlUeYT677YyA

                确定数据集

                确定数据文件格式

                确定数据结构及Demo数据查看

                        数据表(微博)结构

序号

字段名称

字段解释

备注

1

mid

消息的唯一id

对官方mid的加密后的结果

2

retweeted_status_mid

转发的原创微博的mid

如果该博文是转发,此值原博文的mid值

3

uid

微博主的id值

4

retweeted_uid

转发的原创微博的uid

5

source

客户端

从哪个终端发布的消息

6

image

博文是否带着图

7

text

博文内容

8

geo

位置信息

9

created_at

创建时间

10

deleted_last_seen

微博被删除的时间

绝大多数为空

11

permission_denied

当微博被删除后,则该值不为空,设置成"permission denied"

绝大多数为空

                       csv格式数据(comma-separated value)

mid,retweeted_status_mid,uid,retweeted_uid,source,image,text,geo,created_at,deleted_last_seen,permission_denied

mcrP9nRPAQ,mZmwRlHE5R,uK3RXUJ0V,,新浪微博,0,//@ukn  ><//@uVGJCZUP4  早上好! [兔子],,2012-01-02 19:21:57,,

mevVsCECXg,mEjnc1nOt6,uK3RXUJ0V,,新浪微博,0,剛已經有人打電話告訴我了= =//@uK3RXUYW3  !!!!!!!!!!!@ukn //@ukn  啊啊啊啊啊啊啊撒啊啊//@uY02ZFLAN 哈???????????? //@ukn  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!一苦!,,2012-01-02 19:21:19,,

mUS9D2Kvpc,mAaBt22Ngj,uK3RXUJ0V,,新浪微博,0,//@ukn  [可愛]//@uB5NFPQVZ  我们都知道的//@ukn  利达。。这个。。不是只有你知道的事= =估计全世界都知道。。我要听只有你知道的啦!!,,2012-01-02 19:17:06,,

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

 

                洞察数据本身

                        总大小

                                掌握计算方法

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

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

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

                                掌握计算方法

                        总记录条数

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

1.2 将源数据装载到hive仓库

        步骤拆分

                zip原始数据批量解压

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

                将解压完成的明文每天数据文件,按天load到weibo_origin载入原始数据层

                数据检验与校正

                清洗原始数据表weibo_origin,按天分区插入到weibo_product表中

        zip原始数据批量解压

                zip原始位置

        

                 将zip包解压批量解压到指定目录/data1/weibo_text下

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

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

                建表脚本

                        表weibo_origin 脚本-textfile

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;

                         表weibo_product脚本-orcfile(该表用任意hive支持的数据表格式均可)

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表

                shell脚本load_to_weibo_origin.sh

#! /bin/bash

#1、定义csv文件所在的目录

csv_root_dir_local=/home/zel/corpus_dw_hive/day_csv_data/

#2、定义csv上传到hdfs空间的目录

csv_root_dir_hdfs=/user/zel/csv_root_dir/

#3、获取csv的文件名称,作为分区表的分区字段值

csv_filename_list=`ls $csv_root_dir_local | cut -d . -f1`

#4、进行遍历csv_filename_list集合,逐个处理csv文件的上传

for filename in $csv_filename_list

do

    echo $filename

    #嵌入hdfs相关操作

    #1、将本地csv上传到hdfs指定路径当中

    hdfs dfs -copyFromLocal -f $csv_root_dir_local""$filename".csv" $csv_root_dir_hdfs 

    #2、将hdfscsv文件加载到指定的hive表分区当中

    hive -e "

          use zel;

          load data inpath '$csv_root_dir_hdfs$filename.csv' overwrite into table weibo_origin partition(day_seq='$filename');

    "  

      #break

done

#脚本执行完成

        shell脚本执行

                常规测试执行

                sh load to weibo_origin.sh

        生产环境执行

                相关命令

                        nohup

                                英文全称:NO HANG UP

                                不挂断的运行,可以使命令永久的执行下去,和用户终端没有关系

                                例如我们断开SSH连接都不会影响它的运行

                                关闭标准输入,终端不再能够接受任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件。

                                没有后台运行的意思,但有一些后台执行的形式在里边

                        ”&“

                                在后台运行,但当用户会话退出(挂起)的时候,命令自动也跟着退出

                        命令连用:nohup [Command] &

                                命令永久的在后台执行,直到结束

                最终脚本命令

                        nohup ./load to weibo_origin.sh &

        数据检验与校正

                校验导入数据的正确与否

                        样例数据查询是否正常(limil m,查看数据样例有无明显异常)

                        数据量级是否相同(主要是指数据当量,十成级、百万级)

                        数据完整性是否一致(主要是指别丢数据)

                        数据格式与字段是否对齐

                校正方法

                        将数据的导入方式与数据表的解析方式保持一致

                                修改webo_origin 表创建脚本

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 serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

STORED AS textfile;

         将数据表weibo_origin经过清洗规则处理,按天分区载入weibo_product表

                清洗逻辑

                        将每个表中的第一行字段名称去掉,属于多余的

                

                清洗代码

                        from weibo_origin

                        insert overwrite table weibo_product partition(dat_seq)select * where mid1=‘mid’;

                 清洗完成效果

        

 1.3 分词UDF编写

        分词概述

             此处主要指中文分词

                        中文分词(Chinese Word Segmentation,简称cws)

                                指的是将一个汉字序列(一段话)切成一个一个单独的的词的过程

                分词的作用

                        中文分词是文本挖掘的基础,对于输入的一段文中,成功的进行中问分词,可以达到电脑自动识别语句含义的效果。

                        中文分词技术属于自然处理(nlp)技术范畴,对于一句话,人可以通过自己的只是来明白哪些是词过哪些不是,但如何让计算机也能理解?其处理过程为分词处理算法。

                自然语言处理技术(NLP,Nature Language Process)

                        什么是自然语言

                                自然语言即人类的文字顿好口语,或其它用于沟通交流的形式 

                                其为是人类智慧的结晶,自然语言处理是人工智能中最为困难的问题之一,而对自然语言处理的研究也是充满魅力和挑战

                        主要范畴

                                文本朗读(Text  to speech)/语音(speech synthesis)

                                语音识别(Speech recognition)

                                中文自动分词(Chinese word segmentation)

                                词性标注(Part-of-speech tagging)

                                句法分析(Parsing)

                                自然语言生成(Natural language generation)

                                文本分类(Text categorization)

                                信息检索(Infromation retrieval)

                                信息抽取(Infromationem exrtaction)

                                文本校对(Text-proofing)

                                问答系统(Question answering)

                                机器翻译(Machine translation)

                                自动摘要(Automatic summarization)

                                文字蕴涵(Textual entailment)

                        处理难点

                                单词的边界界定

                                        中文中的最小分隔单位是句子,词之间是没有分隔的。不像英文有显著的分隔

                                词义的消歧

                                        中文博大精深

                                                他说的确实在理/这的确是真的

                                                长春市长春节讲话

                                                旅游和服务是最好的

                                                邓颖超生前最喜欢的一个东西

                                                北京大学生前来应聘

                                                小明骑着车子要倒了,小明一把把把把住了!

                                

分词器选择

    • c/c++
      • ICTCLAS
    • java分词器
      • ansj分词(比较简单易用,本项目选择该分词器)
      • hanLP分词
      • mmseg
      • IK分词
      • jieba分词
      • PaoDing分词
      • 天亮分词器
    • python
      • jieba分词

ansj分词器应用集成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值