既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
知识点13:ODS层构建:申明分区代码及测试
-
目标:阅读ODS申明分区的代码及实现测试
-
路径
- step1:代码讲解
- step2:代码测试
-
实施
-
代码讲解
-
step1:为什么要申明分区?
- 表的分区数据由Sqoop采集到HDFS生成AVRO文件
/data/dw/ods/one_make/full_imp/ciss4.ciss_base_areas/20210101/part-m-00000.avro
- HiveSQL基于表的目录实现了分区表的创建
create external table if not exists one_make_ods.ciss_base_areas partitioned by (dt string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' tblproperties ('avro.schema.url'='hdfs:///data/dw/ods/one\_make/avsc/CISS4\_CISS\_BASE\_AREAS.avsc') location '/data/dw/ods/one\_make/full\_imp/ciss4.ciss\_base\_areas'
- 但是Hive中没有对应分区的元数据,无法查询到数据
-
step2:怎么申明分区?
- Alter Table
alter table 表名 add if not exists partition (dt='值') location 'HDFS上的分区路径'
- 例如
alter table one_make_ods.ciss_base_areas add if not exists partition (dt='20210101') location '/data/dw/ods/one_make/full_imp/ciss4.ciss_base_areas/20210101'
-
step3:如何自动化实现每个表的分区的申明?
- 获取分区工具类实例
- 调用申明分区的方法
- 对所有全量表调用申明分区的方法:数据库名称、表名、全量标记、分区值
- 对所有增量表调用申明分区的方法:数据库名称、表名、增量标记、分区值
- 拼接SQL
- 执行SQL
-
-
代码测试
- 注释掉第5 ~ 第6阶段的内容
-
运行代码,查看结果
-
-
小结
- 阅读ODS申明分区的代码及实现测试
知识点14:ODS层与DWD层区别
-
目标:理解ODS层与DWD层的区别
-
路径
- step1:内容区别
- step2:设计区别
- step3:实现区别
-
实施
-
内容区别
- ODS:原始数据
- DWD:对ODS层ETL以后的数据
- 本次数据来源于Oracle数据库,没有具体的ETL的需求,可以直接将ODS层的数据写入DWD层
-
设计区别
- ODS层:Avro格式分区数据表
- DWD层:Orc格式分区数据表
-
实现区别
- ODS层建表:基于avsc文件指定Schema建表
create external table if not exists one_make_ods.ciss_base_areas partitioned by (dt string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' tblproperties ('avro.schema.url'='hdfs:///data/dw/ods/one\_make/avsc/CISS4\_CISS\_BASE\_AREAS.avsc') location '/data/dw/ods/one\_make/full\_imp/ciss4.ciss\_base\_areas'
- DWD层建表:自己指定每个字段的Schema建表
create external table if not exists one_make_dwd.ciss_base_areas( ID string, AREANAME string, PARENTID string, SHORTNAME string, LNG string, LAT string, RANK bigint, POSITION string, SORT bigint ) partitioned by (dt string) stored as orc location '/data/dw/dwd/one\_make/ciss\_base\_areas';
-
-
小结
- 理解ODS层与DWD层的区别
知识点15:DWD层构建:需求分析
-
目标:掌握DWD层的构建需求
-
路径
- step1:整体需求
- step2:建库需求
- step3:建表需求
-
实施
- 整体需求:将ODS层的数据表直接加载到DWD层
insert into dwd partition (dt = '20210101') select * from ods where dt=20210101
-
建库需求:创建DWD层数据库one_make_dwd
-
建表需求:将ODS层中的每一张表创建一张对应的DWD层的表
- 问题1:建表的语法是什么?
create external table dwd.tbname( 字段名 字段类型 字段注释 ) partitioned by (dt string) location '/data/dw/dwd/one_make/ciss_base_areas';
-
问题2:表的名称名是什么,怎么获取?
- 不分全量和增量
- 所有表的名称都在列表中
-
问题3:表的注释怎么来?
- Oracle元数据中有
-
问题4:表的字段怎么获取?
- Oracle元数据中有
-
问题5:Oracle中的字段类型如果与Hive中的类型不一致怎么办?
- 将Oracle中Hive没有类型转换为Hive的类型
-
小结
- 掌握DWD层的构建需求
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。*
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!