img
img

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

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

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

文章目录

01:ODS层构建:需求分析

  • 目标:掌握ODS层构建的实现需求

  • 路径

    • step1:目标
    • step2:问题
    • step3:需求
    • step4:分析
  • 实施

    • 目标:将已经采集同步成功的101张表的数据加载到Hive的ODS层数据表中

    • 问题

      • 难点1:表太多,如何构建每张表?

        • 101张表的数据已经存储在HDFS上

        • 建表

          • 方法1:手动开发每一张表建表语句,手动运行

          • 方法2:通过程序自动化建表

            • 拼接建表的SQL语句
            create external table 数据库名称.表名
            comment '表的注释'
            partitioned by
            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'
            location '这张表在HDFS上的路径'
            TBLPROPERTIES ('这张表的Schema文件在HDFS上的路径')
            
            
              * 表名、表的注释、表在HDFS上的路径、Schema文件在HDFS上的路径
            
            • 将SQL语句提交给Hive或者Spark来执行
        • 申明分区

        alter table 表名 add partition if not exists partition(key=value)
        
        
      • 难点2:如果使用自动建表,如何获取每张表的字段信息?

        • Schema文件:每个Avro格式的数据表都对应一个Schema文件
        • 统一存储在HDFS上

  • 需求:加载Sqoop生成的Avro的Schema文件,实现自动化建表

  • 分析

    • step1:代码中构建一个Hive/SparkSQL的连接
    • step2:创建ODS层数据库
    create database if not exists one_make_ods;
    
    
    • step3:创建ODS层全量表:44张表
    create external table one_make_ods_test.ciss_base_areas
    
    comment '行政地理区域表'
    
    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'
    
    location '/data/dw/ods/one\_make/full\_imp/ciss4.ciss\_base\_areas'
    
    TBLPROPERTIES ('avro.schema.url'='hdfs://bigdata.maynor.cn:9000/data/dw/ods/one\_make/avsc/CISS4\_CISS\_BASE\_AREAS.avsc');
    
    
      - 读取全量表表名
      
      
      	* 动态获取表名:循环读取文件
      - 获取表的信息:表的注释
      
      
      	* Oracle:表的信息
      	* 从Oracle中获取表的注释
      - 获取表的文件:HDFS上AVRO文件的地址
      
       
      ```
      /data/dw/ods/one_make/full_imp
      
      ```
      - 获取表的Schema:HDFS上的Avro文件的Schema文件地址
      
       
      ```
      /data/dw/ods/one_make/avsc
      
      ```
      - 拼接建表字符串
      
      
      	* 方式一:直接相加:简单
      	
      	 
      	```
      	str1 = "I "
      	str2 = "like China"
      	str3 = str1 + str2
      	
      	```
      	* 方式二:通过列表拼接:复杂
      - 执行建表SQL语句
    
    • step4:创建ODS层增量表:57张表

      • 读取增量表表名

        • 动态获取表名:循环读取文件
      • 获取表的信息:表的注释

        • Oracle:表的信息
        • 从Oracle中获取表的注释
      • 获取表的文件:HDFS上AVRO文件的地址

      /data/dw/ods/one_make/incr_imp
      
      
      • 获取表的Schema:HDFS上的Avro文件的Schema文件地址
      /data/dw/ods/one_make/avsc
      
      
      • 拼接建表字符串
      • 执行建表SQL语句
  • 小结

    • 掌握ODS层构建的实现需求

02:ODS层构建:创建项目环境

  • 目标实现Pycharm中工程结构的构建

  • 实施

    • 安装Python3.7环境

    image-20210930150020688

      - 项目使用的Python3.7的环境代码,所以需要在Windows中安装Python3.7,与原先的Python高版本不冲突,正常安装即可
    
    • 创建Python工程

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • 安装PyHive、Oracle库

      • step1:在Windows的用户家目录下创建pip.ini文件

        • 例如:C:\Users\Frank\pip\pip.ini

img
img
img

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

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

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

715020014373)]

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

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

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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐