助力工业物联网,工业大数据之ODS层构建:申明分区代码及测试【十】_ods 工业(2)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

+ **内容区别**


	- 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层的构建需求

知识点16:DWD层构建:建库实现测试

  • 目标阅读DWD建库代码及实现测试

  • 路径

    • step1:代码讲解
    • step2:代码测试
  • 实施

    • 代码讲解

      • step1:DWD层的数据库名称是什么,建库的语法是什么?
      create database if not exists one_make_dwd;
      
      
      • step2:如何实现DWD层数据库的构建?
      cHiveTableFromOracleTable.executeCreateDbHQL(CreateMetaCommon.DWD_NAME)
      
      
    • 代码测试

      • 注释掉第5.2 ~ 第6阶段的内容
      • 运行代码,查看结果

      image-20211009165536267

  • 小结

    • 阅读DWD建库代码及实现测试

知识点17:DWD层构建:建表实现测试

  • 目标阅读DWD建表代码及实现测试

  • 路径

    • step1:代码讲解
    • step2:代码测试
  • 实施

    • 代码讲解

      • step1:如何获取所有表名?
      allTableName = [i for j in tableNameList for i in j]
      
      
        * 列表推导式
      
      • step2:建表的语句是什么,哪些是动态变化的?
      create external table if not exists one_make_dwd.ciss_base_areas(
      	ID string comment '字段的注释',
      	AREANAME string comment '字段的注释',
      	PARENTID string comment '字段的注释',
      	SHORTNAME string comment '字段的注释',
      	LNG string comment '字段的注释',
      	LAT string comment '字段的注释',
      	RANK bigint comment '字段的注释',
      	POSITION string comment '字段的注释',
      	SORT bigint comment '字段的注释'
      ) 
      comment '表的注释'
      partitioned by (dt string) stored as orc
      location '/data/dw/dwd/one\_make/ciss\_base\_areas';
      
      
        * 动态变化的信息如下:
        	+ 表名,表的注释
        	+ 字段
        	+ 路径
      
      • step3:怎么获取字段信息?

      • step4:Oracle字段类型与Hive/SparkSQL字段类型不一致怎么办?

        • timestamp => long
        • number => bigint | dicimal
        • other => String
      • step4:HDFS上的路径是什么?

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

Giq54hV-1715019895904)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值