Day10_Git版本控制
手动的管理和记录每个版本之间的变化
项目开发会存在同样的问题
知识点03:Git的诞生及特点
了解Git的诞生背景及特点
**集中式:SVN**
分布式:Git
Git的特点
-
适合于分布式开发,多人可以共同开发,强调个体
-
公共的版本库服务器的压力不会太大
-
速度快、更加灵活
-
任意的开发者之间如果产生冲突也容易解决
-
不需要联网也可以实现多版本管理
-
知识点04:Git及辅助工具安装
实现Git及辅助工具的安装
-
Git-2.13.0-64-bit.exe:Windows版本的Git工具安装包
-
TortoiseGit-2.4.0.2-64bit.msi:Git的可视化工具安装包
-
TortoiseGit-LanguagePack-2.4.0.0-64bit-zh_CN.msi:TortoiseGit工具的汉化包
知识点05:Git管理的组成结构
掌握Git管理版本的组成结构
-
本地版本控制Git服务器
-
工作区【Work Dir】:就是你开发和修改代码的地方
-
暂存区【Index】:临时存放你即将提交的版本的地方
-
本地版本仓库【HEAD】:本地的版本库,实现本地的版本的管理
-
远程版本仓库:用于共享项目代码版本
知识点06:本地仓库构建几种方式
基于自己的笔记本,在本地操作系统中实现Git本地仓库的构建
step1:准备
本地库只要构建成功就会创建一个 隐藏目录.git
修改配置 打开显示隐藏的项目
step2:构建
方式二:通过Git命令来构建
**方式三:通过TortoiseGit构建**
知识点07:Git基本操作--添加、提交
实现在Git本地工作区,添加文件到本地仓库
step1:创建文件
添加到暂存区
#添加一个或者多个文件到暂存区
git add [file1] [file2] ...
#添加指定目录到暂存区,包括子目录
git add [dir]
#添加当前目录下的所有文件到暂存区
git add .
#如何嫌命令难记,也可以使用下述的tortoiseGit工具操作
注意啊,这里点确定表示添加到暂存区,点击提交就一步提交到仓库了。
**提交到本地库**
#前面我们使用 git add 命令将内容写入暂存区。
#git commit 命令将暂存区内容添加到本地仓库中。
#master涉及分支的管理,我们后面细说。
git commit -m [message]
提交的时候最好写上提交日志 便于后续浏览排查。
查看本地版本库
知识点08:Git基本操作--修改、还原
实现基于本地版本库的修改提交
-
step1:修改文件
-
step2:提交第二个版本
-
step3:修改并提交第三个版本
-
**step4:查看版本日志**
还原:修改文件,但未提交
使用tortoiseGit工具,可以将工作区的内容还原至最后一个提交的版本。
知识点09:Git基本操作--版本差异比较、回退
-
修改文件
-
工作区与最新版本的差异
-
**工作区与倒数第二个版本的差异**
-
工作区与之前任意版本的差异比较
可以使用tortoiseGit工具选中文件、右键查看日志信息。
在日志信息中选中想要比较的版本和工作区的之间的差异。
版本回退
有时候用Git的时候,有可能commit提交代码后,发现这一次commit的内容是有错误的,那么有两种处理方法: 1、修改错误内容,再次commit一次
2、使用git reset 命令撤销这一次错误的commit 第一种方法比较直接,但会多次一次commit记录。 第二种方法会显得干净清爽,因为错误的commit没必要保留下来。但是使用的时候等慎重,对于新手而言。
git reset 命令用于回退版本,可以指定退回某一次提交的版本,有3种模式可供选择,详见画图。
-
小结
-
注意:如果重置回到某个版本时,关闭了tortoiseGit日志窗口,这个版本之后的版本全部会被删除,无法再次回到之后的版本
-
重置git reset,只能倒退回退,如果有前进的需求怎么办?
导出需要重置到的版本,重新提交版本,将原来的一个老版本变成最新版本
知识点10:Git基本操作--删除
-
情况1:文件删除
直接将工作区的已经提交的文件删除之后,不做提交动作,可以使用还原操作。
情况2:删除版本
将工作区的已经提交的文件删除之后,做提交动作,可以通过日志还原。
情况3:删除管理
也就是所谓的摆脱Git的控制
知识点11:添加整个项目
-
复制工程到本地库
-
添加到暂存区
-
忽略不需要做控制的目录
-
提交到本地库
知识点12:暂存区的设计
-
没有暂存区
-
在提交的时候,会让你选择那些文件需要提交
-
我们所提交的必然是一个完整的版本
-
毛病1
-
毛病2
-
版本1:ABC
-
版本2:ABD
-
想要一个版本:ACD
设计暂存区
理解:
-
暂存区:相当于你买东西的先添加购物车
-
版本:就是一次支付
知识点13:Git远程仓库--GitHub创建公共仓库
了解Git远程仓库的设计
注册GitHub,并登陆
本地秘钥生成
-
step1:在自己Windows本地生成一对公私钥
-
ssh-keygen -t rsa
-
step2:找到自己的公钥的位置:当前用户的家目录下:C:\user\用户名 \ .ssh
-
step3:打开公钥的文件,并复制公钥的内容
-
配置GitHub
-
将整个公钥的所有内容配置到SSH的key中,添加保存即可
-
小结
-
实现本地仓库与GitHub公共仓库的连接
知识点15:同步到远程仓库
实现本地仓库代码同步到远程仓库
方式一:命令同步
#添加一个远程仓库的地址叫origin
git remote add origin git@github.com:Frank-itcast/repository1.git
练习中替换成自己的仓库地址
#git remote add origin git@github.com:AllenWoon/xls_1.git
#将本地master同步到远程的origin
git push -u origin master
方式二:工具同步:SSH
方式三:工具同步:HTTPS
小结
知识点16:从远程仓库克隆
实现从远程仓库克隆到本地仓库
知识点17:冲突问题
了解版本管理的冲突问题及解决方案
-
step1:用户1本地是版本3,Github也是版本3
-
step2:用户2克隆了Github中版本3,用户2的本地是版本3
-
step3:用户1本地是版本4,GitHub也是版本4
-
step4:用户2基于版本3开发了用户2的版本4推动给GitHub
-
产生了冲突,如何解决?
本地reps3
添加一个文件demo01.java,先提交到本地仓库;
然后同步到GitHub远程仓库中
git@github.com:AllenWoon/remote1.git
本地reps4:克隆刚才的远程仓库
解决
知识点18:分支的功能与分支管理
知识点20:IDEA、Pycharm等开发工具与Git集成
-
创建一个项目工程
-
配置与Git关联
-
创建模块代码
-
**创建本地库设置忽略**
-
添加并提交代码
知识点21:IDEA中使用Git
知识点22:IDEA关联GitHub
实现IDEA与GitHub的集成
知识点23:IDEA协同开发拉取代码
实现IDEA拉取代码
知识点24:IDEA中分支的使用
实现IDEA中分支的管理
-
方式一:右键菜单
-
方式二:右下角标签
-
创建分支
-
切换分支
-
删除分支
附录一:创建GitHub账号
进入自己邮箱,点击按钮或者链接
创建163邮箱,
Day10_新零售项目总结
-
项目名称
亿品新零售(可改)
-
项目定位
大数据离线数据仓库系统(OLAP)
-
项目背景
以互联网为依托,通过运用大数据、人工智能等先进技术手段,对商品的生产、流通与销售过程进行升级改造,进而重塑业态结构与生态圈,并对线上服务、线下体验以及现代物流进行深度融合的零售新模式。
关键字眼:线上电商、线下门店、现代物流 + 大数据分析
分析的目的:优化业务流程、改善业务环境、赚取更多的钱。(业务需求,营销人员、管理层来定)
项目架构
项目数据流程
不管是整体数据流程还是在数仓分层中的流程。核心就是:数据从哪里来,数据到哪里去。
在说数据流程的时候,必须要阐述数据在当前这个阶段(这一分层)的需要达到的功能。
#参考话术 只可意会 不可模仿
#1、通过sqoop将业务数据库中的数据采集同步到新零售数仓的ODS层中;
可能问到:sqoop工具知识点
几种同步方式及区别:全量覆盖、全量同步、增量同步(仅新增)、增量同步(新增及更新同步)
sqoop如何实现几种同步的,尤其是增量同步?
要求业务系统表设计的时候有 create_time update_time
sqoop --query "select where create_time between dt 00:00:00 23:59:59
sqoop在同步数据中有遇到什么问题吗?怎么解决的?
数据格式ORC(HCatalog) 表数据量大--m 字段分隔符 --split-by 文本格式
结合sqoop和hive建表如何使用
扩展问题:你是否了解其他的EL抽取工具? 多款同类型软件之间的比较? 知识视野宽度?
sqoop能否进行实时采集?(不能) 哪个实时抽取?(canal ogg)
#2、基于ODS层数据进行清洗转换处理的工作, 根据分析需求区分事实表、维度表,后将数据同步至DWD层, 同时在DWD层完成了历史数据维护工作,项目采用拉链表的方案;
可能问到:清洗转换具体做了什么,怎么做的
空值处理 coalesce函数 nvl函数
日期转换 date timestamp
枚举类型解释 1 2 3 3
脱敏操作 手机号 身份证号码
如何区分事实、维度,什么是事实、什么是维度--->这一扩展可能会扯到维度建模整个理论
(day03)
事实:你分析关注的内容
维度:分析问题的角度
拉链表是什么?解决什么?如何实现拉链?
拉链表使用的关键原因:需要记录维护历史状态、数据还不能冗余
拉链实现的关键是开始时间 结束时间标识数据有效期 9999-12-31
sql技术角度实现拉链过程:
1、从ODS层查询增量数据(包括更新和新增的) ---->结果集1
2、历史拉链表 left join 结果集1 ---->is not null -->修改历史数据的结束
3、将1、2的结果union all合并 新的拉链结果
#3、接着对DWD层基于业务模块进行数据维度退化处理工作, 将退化后的宽表数据灌入到DWB层中, 构建了整个集团数据中心
可能问到:维度退化是什么?如何实现?依据是什么?优缺点?
实际中有两种操作:1、维度表退化到事实表中
2、多个事实表退化到一个核心的事实上
3、多个维度表退化到一个维度表中
#4、开始进行主题统计分析, 整个项目主题共有三个(销售主题, 商品主题, 用户主题), 根据业务需求、分析师提供的维度和指标, 进行统计分析, 在统计的时候, 先进行提前聚合处理工作, 将聚合统计后宽表数据同步到DWS层中;
可能问到:主题有哪些、指标、维度有哪些?主题、指标、维度怎么确定的?
主题有哪些表?如果表名和表个数张嘴说出来那就十分棒棒了。
如果说不出来?业务不熟悉,打酱油的?项目没做过?培训的?
预聚合这里指的是什么?为什么要预聚合?
先把粒度细的计算出来 便于后续上卷计算粒度粗的。
#4、后对DWS层进行细化上卷维度统计操作, 形成DM层数据;
可能问题:上卷是?如何实现?下钻?---->这里可能延伸出OLAP多维分析 rollup cube等
#5、最后根据报表系统应用要求, 从DM层获取相关的数据拼接, 同步到RPT层, 再通过presto将数据导出到mysql中, 后续供应用使用;
可能问题:RPT是什么?报表系统直接使用DM数据行吗?为什么? 解耦合
presto导出数据怎么操作的?
为什么使用mysql存储最终数据?
#以上每个步骤中,都可能会问到的是
sqoop、hive、presto功能技术点 优化点
你这这里做了什么工作? 负责某个主题的完整实现
遇到了哪些问题(回答好是强烈加分项 提前准备)
问题怎么发现的?怎么思考的?怎么寻找解决方案?怎么测试方案的?最终解决了吗? 有什么收获
这个问题你用A解决,B你知道吗? AB区别是?
针对你做的有考虑什么优化方案吗?
优化方案解决什么的? 查询效率 存储效率 逻辑清晰?
为什么用这个方案,其他相同类似的你还知道吗?
项目服务器配置、数据量、软件版本
第一阶段
目标
1.完成10个hadoop集群节点的搭建工作
2.完成调度平台的搭建工作
3.完成基础数据迁移 mysql--> Hadoop平台
4.完成:销售模块的数据建模
5.能够满足业务对于基础销售的需求
资源
1.人员
项目经理一名
数据开发工程师三名
数据分析师2名
2.时间
3个月
-----------------------------------------------------------------------------------
第二阶段
目标
1.完成32个hadoop节点的扩容工作
2.完成相应内存计算平台presto集群的搭建
3.完成整个源系统的数据抽取工作
4.完成:销售模块、用户模块、商品模块、促销模块数据建模工作
5.满足公司日常运营的80%的数据需求和报表需求
6.支撑财务的成本和利润的核算
7.完成准实时数据的数据应用开发工作
资源
1.人员
项目经理一名
数据开发工程师四名
数据分析师3名
2.时间
4个月
项目增量数据、全量数据
数据量
1 全量
经过4年左右的业务发展,整个数据平台的数据为35T左右,冗余存储量为105T。
2 增量
每日增量25G左右。
项目集群服务器配置
集群规模
40台服务器
操作系统 CentOS 7.5 x86 64
集群规模
40台服务器
操作系统 CentOS 7.5 x86 64
=这里需要注意 服务器具体的配置 整个集群的资源总情况也要记一下。
每台内存、CPU、磁盘大小
整个集群内存、CPU、磁盘大小
40台机器都是存储数据的吗?都是presto计算节点吗?
项目使用软件及版本号
java 1.8
hadoop 3.0.0+cdh6.2.1
hdfs 3.0.0+cdh6.2.1
Hive 2.1.1+cdh6.2.1
yarn 3.0.0+cdh6.2.1
zookeeper 3.4.5-cdh6.2.1
presto 0.245.1
已看完::::::