2024年助力工业物联网,工业大数据之ODS层构建:代码结构及修改【九】,大数据开发studio基础

img
img
img

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

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

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

  • 目标:阅读连接代码及实现连接代码测试

  • 路径

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

    • 为什么要获取连接?

      • Python连接Oracle:获取表的元数据
      • 表的信息:TableMeta
        • 表名
        • 表的注释
          • list:[列的信息]
      • 列的信息:ColumnMeta
        • 列名
        • 列的注释
          • 列的类型
        • 类型长度
          • 类型精度
    • Python连接HiveServer或者Spark的ThriftServer:提交SQL语句

    • 连接代码讲解

      • step1:怎么获取连接?

        • Oracle:安装Python操作Oracle库包:cx_Oracle
        cx_Oracle.connect(ORACLE_USER, ORACLE_PASSWORD, dsn)
        
        
        • Hive/SparkSQL:安装Python操作Hive库包:PyHive

        hive.Connection(host=SPARK_HIVE_HOST, port=SPARK_HIVE_PORT, username=SPARK_HIVE_UNAME, auth=‘CUSTOM’, password=SPARK_HIVE_PASSWORD)

        
        
          + step2:连接时需要哪些参数?
          
          
          	- Oracle:主机名、端口、用户名、密码、SID
          	- Hive:主机名、端口、用户名、密码
          + step3:如果有100个代码都需要构建Hive连接,怎么解决呢?
          
          
          	- 将所有连接参数写入一个配置文件:resource/config.txt
          	- 通过配置文件的工具类获取配置:ConfigLoader
          + step4:在ODS层建101张表,表名怎么动态获取呢?
          
          
          	- 读取表名文件:将每张表的名称都存储在一个列表中
          + step5:ODS层的表分为全量表与增量表,怎么区分呢?
          
          
          	- 通过对@符号的分割,将全量表和增量表的表名存储在不同的列表中
        
    • 连接代码测试

      • 启动虚拟运行环境

      image-20210930160404445

      • 运行测试代码

        • 注释掉第2 ~ 第6阶段的内容
        • 取消测试代码的注释
        • 执行代码观察结果image-20211009151713201
  • 小结

    • 阅读连接代码及实现连接代码测试

03:ODS层构建:建库代码及测试

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

  • 路径

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

    • 代码讲解

      • step1:ODS层的数据库名称叫什么?
      one_make_ods
      
      
      • step2:如何使用PyHive创建数据库?

        • 第一步:先获取连接
        • 第二步:拼接SQL语句,从连接对象中获取一个游标
        • 第三步:使用游标执行SQL语句
        • 第四步:释放资源
    • 代码测试

      • 注释掉第3 ~ 第6阶段的内容
      • 运行代码,查看结果image-20211009153910448
  • 小结

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

04:ODS层构建:建表代码及测试

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

  • 路径

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

    • 代码讲解

      • step1:表名怎么获取?
      tableNameList【full_list,incr_list】
      full_list:全量表名的列表
      incr_list:增量表名的列表
      
      
      • step2:建表的语句是什么,哪些是动态变化的?
      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地址
      
      • step3:怎么获取表的注释?

        • 从Oracle中获取:从系统表中获取某张表的信息和列的信息
        select
               columnName, dataType, dataScale, dataPercision, columnComment, tableComment
        from
        (
            select
                   column_name columnName,
                   data_type dataType,
                   DATA_SCALE dataScale,
                   DATA_PRECISION dataPercision,
                   TABLE_NAME
            from all_tab_cols where 'CISS_CSP_WORKORDER' = table_name) t1
            left join (
                select
                       comments tableComment,TABLE_NAME
                from all_tab_comments WHERE 'CISS_CSP_WORKORDER' = TABLE_NAME) t2
                on t1.TABLE_NAME = t2.TABLE_NAME
            left join (
                select comments columnComment, COLUMN_NAME
                from all_col_comments WHERE TABLE_NAME='CISS_CSP_WORKORDER') t3
                on t1.columnName = t3.COLUMN_NAME;
        
        

        image-20211009154553669

      • step4:全量表与增量表有什么区别?

        • 区别1:表名不一样
          • full_table_list
          • incr_table_list
        • 区别2:路径不一样
          • /data /dw /ods /one_make /full /Oracle库名.表名
          • /data /dw /ods /one_make /incr /Oracle库名.表名
      • step5:如何实现自动化建表?

        • 自动化创建全量表
          • 获取全量表名
          • 调用建表方法:数据库名称、表名、全量标记
          • 通过Oracle工具类获取表的信息【表的名称、表的注释、字段信息等】
          • 拼接建表语句
          • 执行SQL语句
        • 自动化创建增量表
          • 获取增量表名
          • 调用建表方法:数据库名称、表名、增量标记
          • 通过Oracle工具类获取表的信息【表的名称、表的注释、字段信息等】
          • 拼接建表语句
          • 执行SQL语句
    • 代码测试

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

img
img

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

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

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

2356308)]

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值