流程

1、项目开发的标准流程2、项目概述

  1. 解决项目的基本描述问题。
  2. IO
  3. Input:用户需求
  4. Output:系统需求,即产出prd

3、需求分析

  1. 解决可行性问题
  2. IO
  3. Inputprd文档
  4. Output
  5. 标准输出:需求分析说明书
  6. 实际输出:原型设计为主。

4、技术方案和开发计划

  1. 技术方案
  2. 解决原型当中涉及到的主要功能需求对应的具体技术循行
  3. IO
  4. Input:数据处理流程
  5. Output:每个处理流程对应的技术选型
  6. 开发计划
  7. 解决如何更精细化管理项目开发全过程
  8. IO
  9. Input:前期工作的综合梳理汇总和分析
  10. Output:开发计划表,俗称排期表
  11. 细节开发和风险控制
  12. 按照之前分析出来的模块进行分工分阶段开发
  13. 1阶段:确定数据源
  14. 数据洞察
  15. 总大小
  16. 平均文件大小-文件个数
  17. 总记录数
  18. 可预见的最大和最小文件大小

小坑

  1. 1cp 拷贝文件时,如果文件夹名称有相同,就写文件的全路径。 可一次拷贝多个文件 文件与文件之间用空格区分 在这4zip包目录下,拷贝到另一个目录。这个目录要用绝对路径写

cp 20120102.zip 20120103.zip 20120104.zip 20120105.zip /home/xuyunfeng/study/yuqing/data/temp_day_zip_dir

  1. 2shell脚本写数据库sql时,记得写切换数据库的sql语句。
  2. 3、数据洞察4个维度与方法:----总大小 1、准确计算法 2、评估及算法 技术点 ls wc -l du
  3. ls | wc -l 这是展示当前列表中文件条数。
  4. du -sh . 展示当前文件中 所有文件总 大小
  5. du -sh * 展示当前文件中 每个文件的大小
  6. ------总文件个数/平均文件大小 技术点 du
  7. zip包是多大,解压后是多大
  8. -------总记录条数 wc -l 文件名 看一个文件中有多少内容。 总大小/单个文件大*单个文件的记录数 = 总记录条数
  9. -------可遇见的最大/最小文件记录数
  10. 最大 du -sh * | sort tail -1
  11. 最小 du -sh * | sort head -1
  12. 4、批量解压到指定目录
  13. ls | xargs -n 1 unzip -o -d ../temp_day_csv_dir/
  14. 管道符 | 将读取到的内容以字符串传递 当用 xargs时,将读取到的内容以参数传递。
  15. -n表示以空格分,1代表数量。 unzip -o 代表覆盖写入 -d代表解压到的目录
  16. 5shell编程之获取集合中元素
  17. 通过forwhile循环均可以 For语法
  18. for temp in $list do;
  19. 中间处理代码即可
  20. done
  21. 6shell脚本加载数据 批量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

  1. #echo $csv_file_path
  2. #获取加载到的分区表中的分区值
  3. day_seq='echo $csv_file_path | cut -d '.' -f1'
  4. #将本地文件上传到hdfs中,才能被hive加载
  5. csv_file_path_absolute=$csv_root_dir$csv_file_path
  6. hdfs dfs -put -f $csv_file_path_absolute $csv_root_dir_hdfs
  7. #定义hdfs处的csv全路径
  8. csv_file_path_hdfs=$csv_root_dir$csv_file_path
  9. hive -e "
  10. user $db_name
  11. load data inpath '$csv_file_path_hdfs' overwrite into table $table_name partition(day_seq='$day_seq');
  12. "
  13. done

7、保证shell脚本断开客户端,依旧可以执行 nohup .sh & nohup sh 脚本文件名 &

nohup sh load_to_weibo_origin.sh &