流程
1、项目开发的标准流程2、项目概述
解决项目的基本描述问题。
IO
Input:用户需求
Output:系统需求,即产出prd
3、需求分析
解决可行性问题
IO
Input:prd文档
Output:
标准输出:需求分析说明书
实际输出:原型设计为主。
4、技术方案和开发计划
技术方案
解决原型当中涉及到的主要功能需求对应的具体技术循行
IO
Input:数据处理流程
Output:每个处理流程对应的技术选型
开发计划
解决如何更精细化管理项目开发全过程
IO
Input:前期工作的综合梳理汇总和分析
Output:开发计划表,俗称排期表
细节开发和风险控制
按照之前分析出来的模块进行分工分阶段开发
第1阶段:确定数据源
数据洞察
总大小
平均文件大小-文件个数
总记录数
可预见的最大和最小文件大小
小坑
1、cp 拷贝文件时,如果文件夹名称有相同,就写文件的全路径。 可一次拷贝多个文件 文件与文件之间用空格区分 在这4个zip包目录下,拷贝到另一个目录。这个目录要用绝对路径写
cp 20120102.zip 20120103.zip 20120104.zip 20120105.zip /home/xuyunfeng/study/yuqing/data/temp_day_zip_dir
2、shell脚本写数据库sql时,记得写切换数据库的sql语句。
3、数据洞察4个维度与方法:----总大小 1、准确计算法 2、评估及算法 技术点 ls, wc -l ,du
ls | wc -l 这是展示当前列表中文件条数。
du -sh . 展示当前文件中 所有文件总 大小
du -sh * 展示当前文件中 每个文件的大小
------总文件个数/平均文件大小 技术点 du
zip包是多大,解压后是多大
-------总记录条数 wc -l 文件名 看一个文件中有多少内容。 总大小/单个文件大*单个文件的记录数 = 总记录条数
-------可遇见的最大/最小文件记录数
最大 du -sh * | sort tail -1
最小 du -sh * | sort head -1
4、批量解压到指定目录
ls | xargs -n 1 unzip -o -d ../temp_day_csv_dir/
管道符 | 将读取到的内容以字符串传递 当用 xargs时,将读取到的内容以参数传递。
-n表示以空格分,1代表数量。 unzip -o 代表覆盖写入 -d代表解压到的目录
5、shell编程之获取集合中元素
通过for、while循环均可以 For语法
for temp in $list do;
中间处理代码即可
done
6、shell脚本加载数据 批量csv 加载到对应的分区表中 先上传到hive,再load。中间会有一些变量。
! /bin/bash
定义相关的变量 —-路径,数据库名,表名
csv_root_dir = ../data/temp_day_csv_dir/
csv_root_dir_hdfs = /user/xuyunfeng/
db_name = xuyunfeng
table_name=weibo_origin
获取csv当中的csv文件列表
csv_file_list=’ls $csv_root_dir’
遍历文件列表,即shell如何遍历集合的问题
for csv_file_path $csv_file_list;do
#echo $csv_file_path
#获取加载到的分区表中的分区值
day_seq='echo $csv_file_path | cut -d '.' -f1'
#将本地文件上传到hdfs中,才能被hive加载
csv_file_path_absolute=$csv_root_dir$csv_file_path
hdfs dfs -put -f $csv_file_path_absolute $csv_root_dir_hdfs
#定义hdfs处的csv全路径
csv_file_path_hdfs=$csv_root_dir$csv_file_path
hive -e "
user $db_name
load data inpath '$csv_file_path_hdfs' overwrite into table $table_name partition(day_seq='$day_seq');
"
done
7、保证shell脚本断开客户端,依旧可以执行 nohup .sh &
nohup sh 脚本文件名 &