50-天亮大数据系列教程之舆情热点挖掘项目-课堂笔记-7

1、数据类项目的开发流程
1) 走通流程(done,即已完成的意思)
作用:掌握项目主体流程、技术难点、重点、工作量等等。
2) 全部操作均shell脚本文件化
作用:所有操作均有据可循、可维护性增强
3) 流程化
作用:简化运维工作量和难度、辅助项目做梳理和优化
4) 收尾上线和总结
作用:最终转化一个项目的交付,
每个里程碑均有仪式感:即开会、总结、party

2、全部操作均shell脚本文件化

  1. 找出哪些环节还没有脚本文件?
    1.1) zip->csv没有脚本化

3、代码当中常见的“4”的作用?

  1. 4的英文是four,与for同音,即为。。。而。。。。
  2. 常见的应用案例:log4j,deeplearning4j

4、shell中ls路径列表时,用模糊查找时候的注意事项?
1) ls 正常路径(不添加模糊查找)
则返回值是文件名称,不带父路径。
2) ls 添加了模糊查找的路径值
则返回值是文件的绝对路径

5、全部操作流程化

  1. 实现要点
    完全根据环境的实际流程,来做项目的流程化。
    标准正常的情况要必须满足,同时要尽量满足明显的、潜在不正常情况。

  2. 案例说明
    以本项目为例,在走流程的时候,都是2周或是3周一起处理,是不是标准流程。
    正常的情况,应该是一周来一次数据,项目是逐周来处理的。
    明显潜在的情况是:若上游数据来迟了或是故障了,会出现一次性来2周、3周之类的数据,
    故该种情况我们也要流程化处理。

  3. 详细梳理流程细节
    3.1) zip->csv
    3.1.1) 问题点: 1周情况、多周的情况
    解决方法: 粒度最小化计算、加入任务粒度调度器
    本案例:粒度最小化即将计算周期均转化成1周
    粒度调度器即将多周的情况计算,转化成1周即可。
    3.1.2) 特殊情况是无数据,即无周
    通过空判断来解决无数据,防止空跑或误跑的问题。
    3.1.3) 历史数据清理问题
    rm删除掉已解压成功的zip文件,必要时候做$?的删除成功与否的判断。
    3.1.4) 其它
    异常处理情况:
    删除数据失败(可加可不加)
    数据zip文件不存在(已加入空判断)
    zip->csv解压失败(已加入失败判断)

    3.2) csv->weibo_origin
    3.2.1) 1周情况、多周的情况
    通过调整输入、输出的参数来解决
    注意一定要写测试用例,来验证脚本的正确性。
    3.2.2) 历史数据清理问题
    在hive脚本执行成功后,进行rm csv_filepath的删除操作。
    此时对删除成功与否可进行校验也可不进行检验。
    3.2.3)异常处理情况:
    csv删除失败(可加判断也可不加)
    load数据失败(已通过hive脚本返回状态码判断)
    3.3) weibo_origin->weibo_product
    1周情况、多周的情况
    异常处理情况:来源数据是否一定存在、
    3.4) weibo_product->weibo_seg_result
    1周情况、多周的情况
    异常情况:
    1) 运行时间过长、OOM问题
    该问题开发工程师只能保证代码没有问题,其它因为平台参数、平台资源紧张等
    外部因素导致的任务延迟、代码运行异常等,均应由平台运维人员搞定。
    3.5) weibo_seg_result->weibo_seg_wc
    1周情况、多周的情况
    3.6) weibo_seg_wc->本地hot_words生成
    1周情况、多周的情况
    异常情况:本地输出目录的位置,一定要谨慎
    3.7) 本地hot_words->mysql weibo_hot_words表中
    1周情况、多周的情况不存在,由上边的临时目录已经确定过了!!!
    异常情况:用户名/密码、数据库链接
    3.8) web中WeiBoDBManager类中的数据查询
    1周情况、多周的情况
    3.9) 最细粒度串行化-相当最低层的调度
    由3.1至3.8已将各个数据结节处理完成,将所有环节串联成一个脚本。
    3.10) 批量周数据任务调度
    编辑schedule_week_batch逐个周获取路径,调度schedule_week_once逐周执行。
    注意:是批量串行执行,而不是批量并行。
    串行执行的优点就是一次使用资源相对少一些,而且便于查错、减少代码复杂度。
    若是并行,最大的问题是一次性用资源过多,反而降低任务的总体执行效率。
    3.11) 入口标准化
    作用)类似于springboot的入口类一样,方便各类开发人员熟悉流程、阅读代码、便于维护。
    作法)无论哪种项目,最后都由一个统一的入口,名称均要一致。
    在本例当中,入口脚本,统称为a_main.sh
    3.12) 周期任务执行

6、关于linux命令执行状态码
状态码:即命令执行结果的状态值返回,只有0代表正常,非0均为不正常。
获取linux命令状态码的方式: ? ?,任何命令执行完成,均会自带一个 ?的返回值,来标识该命令的执行结果。
常见状态码:0代表正常
126 代表permission denied
127 代表command not found
使用误区:
当需要多次使用同一个执行命令的状态码时,一定要用定义变量接收该 ? ?, 后续操作,直接引用该变量即可。 主要原因即 ?始终代表最后一个命令的执行状态返回。

7、shell中输出重定向问题

  1. 标准输入输出I/O的分类
    1.1) std in 标准输入,用0来标识
    1.2) std out 标准输出,用1来标识
    1.3) std error out 标准错误输出,用2来标识
  2. 常见用法
    /dev/null 相当于系统的黑洞,只进数据不出数据。
    ls file_path 2>/dev/null ,此效果即为命令执行出错时,不会在标准控制台显示了,直接重定向黑洞中。

8、shell中参数传递的说明
参数传递是通过$符号来接收,
$0 代表shell脚本文件
$1 传给shell的第1个参数
$n 传给shell的第n个参数
$* 即为取全部传给shell的参数

9、测试分类说明

  1. 单元测试:主要在java源码开发的时候,一般均会有。
  2. 功能/脚本测试:主要用shell或是开发一定阶段后做的测试。
  3. 黑/白盒测试
    3.1) 黑盒测试:不管内部逻辑,只管输入和输出。(软件测试工程师)
    3.2) 白盒测试:里边的逻辑及输入输出要非常清楚的情况,做的测试。(软件测试开发工程师)

10、 hive中sql子查询注意事项?
当用hql子查询的时候,必须要子查询一个别名(alias),
即不管什么形式的数据源,一定要有个名字指向。

11、sql当中where与group by等关键字与字段使用顺序的关系?
1)常见的sql样例
select f1,f2,f3 from table where f1=123 group by f3 order by f2 desc
2) 优先级:select 和 where使用时,先计算where,后计算select,
因此,select当中的别名,在where中是不能使用的。
3) 优先级: select 和 order by使用时,先计算select,后计算order by,
因此,在order by当中若使用到别名所在的字段,则必须使用别名名称。
3) 优先级: select 和 group by使用时,先计算group by,后计算select,
因此,在group by当中只能使用原表当中的字段,不能使用别名字段。
4) group by使用条件:
当使用group by时,是会对select中的字段有约束。
select只能出现两种字段,一种是group by key中的key字段,第二种是针对原表中字段做的聚合函数。

12、linux中的交换文件swap file.
swap file:linux当中为编辑文件生成的一个中间过滤状态,
当文件进行vi等编辑文件操作时,如one.txt,系统会自动成一个与之对应的隐藏文件.one.txt.swp
如果正常编辑和退出完毕后,.one.txt.swp文件自动合并和消失。
如果是非常退出的情况下,则该交换文件会一直保留,不会自动消失。
若出现不会自动消失的情况,最简单的处理方法手动删除该swp文件。

13、shell空串判断方法
1) !来输助判断,同时注意:一定要!符号后边添加双引号,否则不能判断带有空格的数据格式
file_path_list=ls $input_zip_file_list 2>/dev/null
if [ ! “$file_path_list” ]; then
echo “zip目录为空,请检查,将退出执行!”
exit
fi

14、周期任务执行
1) crontab
当crontab执行相关任务时,crontab -e编辑文件中,
应写如下周期任务配置模板:
cd 脚本所在目录 && nohup sh shell脚本 >> nohup.out 2>&1 &

15、请写一个测试用例,来验证crontab的执行路径是哪里?



天亮教育是一家从事大数据云计算、人工智能、教育培训、产品开发、咨询服务、人才优选为一体的综合型互联网科技公司。
公司由一批BAT等一线互联网IT精英人士创建,
以"快乐工作,认真生活,打造高端职业技能教育的一面旗帜"为愿景,胸怀"让天下没有难找的工作"使命,
坚持"客户第一、诚信、激情、拥抱变化"的价值观,
全心全意为学员赋能提效,践行技术改变命运的初心。

更多学习讨论, 请加入
官方-天亮大数据交流-366784928
群二维码:
这里写图片描述
天亮教育公开课-从小白到大佬修成记-全系列视频地址:http://bbs.myhope365.com/forum.php?mod=viewthread&tid=1422&extra=page%3D1

欢迎关注天亮教育公众号,大数据技术资料与课程、招生就业动态、教育资讯动态、创业历程分享一站式分享,官方微信公众号二维码:
在这里插入图片描述
天亮教育官方群318971238,
爬虫、nlp技术qq群320349384
hadoop & spark & hive技术群297585251
教育培训官网:http://myhope365.com
项目研发业务尚云科技官网:http://shangyuninfo.com/
官方天亮论坛:http://bbs.myhope365.com/

猜你喜欢

转载自blog.csdn.net/erliang20088/article/details/85230048