Hive+Spark离线数仓工业项目--ODS层及DWD层构建(1)

news2024/11/26 10:22:55

目标:自动化的ODS层与DWD层构建
实现
  - 掌握Hive以及Spark中建表的语法规则
  - 实现项目开发环境的构建
  - 自己要实现所有代码注释
  - ODS层与DWD层整体运行测试成功

数仓分层回顾

目标:回顾一站制造项目分层设计

实施

 ODS层 :原始数据层

    - 来自于Oracle中数据的采集

    - 数据存储格式:AVRO

    - ODS区分全量和增量

    - 实现

      - 数据已经采集完成

      - step1:创建ODS层数据库:one_make_ods

      - step2:根据表在HDFS上的数据目录来创建分区表

      - step3:申明分区

  DWD层

    - 来自于ODS层数据
    - 数据存储格式:ORC
    - 不区分全量和增量的
    - 实现
      - step1:创建DWD层数据库:one_make_dwd
      - step2:创建DWD层的每一张表
      - step3:从ODS层抽取每一张表的数据写入DWD层对应的表中

Hive建表语法

目标:掌握Hive建表语法

实施

  - EXTERNAL:外部表类型
    - 内部表、外部表、临时表
  - PARTITIONED  BY:分区表结构
    - 普通表、分区表、分桶表
  - CLUSTERED BY:分桶表结构
  - ROW FORMAT:指定分隔符
    - 列的分隔符:\001
    - 行的分隔符:\n
  - STORED AS:指定文件存储类型
    - ODS:avro
    - DWD:orc
  - LOCATION:指定表对应的HDFS上的地址
    - 默认:/user/hive/warehouse/dbdir/tbdir
  - TBLPROPERTIES:指定一些表的额外的一些特殊配置属性

Avro建表语法

- **目标**:掌握Hive中Avro建表方式及语法

- **路径**

  - step1:指定文件类型
  - step2:指定Schema
  - step3:建表方式

- **实施**

  - Hive官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTable

  - DataBrics官网:https://docs.databricks.com/spark/2.x/spark-sql/language-manual/create-table.html

  - Avro用法:https://cwiki.apache.org/confluence/display/Hive/AvroSerDe

  - **指定文件类型**

 

 建表语法


     

ODS层构建:需求分析

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

路径

  - step1:目标
  - step2:问题
  - step3:需求
  - step4:分析

- **实施**

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

  - **问题**

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

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

      - 建表 

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

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

    - 难点2:如果使用自动建表,如何获取每张表的字段信息?

      - Schema文件:每个Avro格式的数据表都对应一个Schema文件

      - 统一存储在HDFS上

        

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

分析 

      - 读取全量表表名

        - 动态获取表名:循环读取文件

      - 获取表的信息:表的注释

        - Oracle:表的信息
        - 从Oracle中获取表的注释

     

        - 方式二:通过列表拼接:复杂

      - 执行建表SQL语句

    - step4:创建ODS层增量表:57张表

      - 读取增量表表名
      
        - 动态获取表名:循环读取文件
      
      - 获取表的信息:表的注释
      
        - Oracle:表的信息
        - 从Oracle中获取表的注释
      
      
      - 拼接建表字符串
      
      - 执行建表SQL语句

 ODS层构建:创建项目环境

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

实施

安装Python3.7环境

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

创建Python工程

 安装PyHive、Oracle库

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

      - 例如:**C:\Users\Frank\pip\pip.ini**

      - 内容:指定pip安装从阿里云下载

  step2:将文件添加到Windows的**Path环境变量**中

 step3:进入项目环境目录

      - 例如我的项目路径是:**D:\PythonProject\OneMake_Spark\venv\Scripts**

 将提供的**sasl-0.2.1-cp37-cp37m-win_amd64.whl**文件放入Scripts目录下

 在CMD中执行以下命令,切换到Scripts目录下

       

step4:CMD中依次执行以下安装命令

 step5:验证安装结果

  温馨提示:其实工作中你也可以通过Pycharm直接安装


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vulnhub:Derpnstink靶机渗透

攻击机kali:192.168.56.108 靶机derpnstink:192.168.56.114 扫描同网段下存活主机 扫描服务版本信息 开启了21、22、80端口,分别对应着ftp、ssh、http服务,打开浏览器进行访问 查看源代码发现flag1和info.txt 点开info.txt 这个的…

volantis使用php实现Gitee友链

介绍 本文使用Gitee实现Volantis主题友链功能,其中友链使用的是site标签,因为该标签可以展示图片,如 {% sites repo:example.json api:https://example.dearxuan.com %} 友链api的最终路径为 api “版本” repo,如上面代码的最…

【精准三点定位求解汇总】利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解、几何绘图法求解)

【精准三点定位求解汇总】利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解、几何绘图法求解) 众所周知,如果已知三个点的坐标,到一个未知点的距离,则可以利用以距离为半径画…

初学Nginx

目录 (一)Nginx介绍 (二)Nginx安装和启动 1,Nginx的目录结构 2,查看Nginx版本指令 3,检查配置文件是否正确 4,启动和关闭Nginx服务 (三)Nginx的配置 1&a…

智能工厂数字孪生的运用

信息技术与制造业的融合是当前的发展趋势,数字孪生其中 就包括了“智能工厂”的技术。在过去几年的发展中,我国的工业企业已经初步形成了 5 层的信息化体系结构,而在新一代的智能工厂体系中,借助数字孪生技术让工厂实现智能化生产…

SpringMVC使用Jackson、双向关联的解决策略@JsonIgnore

目录:一、SpringMVC和Jackson的关系:二、Jackson解决双向关联导致的栈溢出问题的解决方法:三、如何使用JsonIgnore:一、SpringMVC和Jackson的关系: SpringMVC返回return Object类型数据给前端时会自动调用jackson将Object类型的数…

pytorch深度学习常用命令

文章目录命令目录.item().items()最大值的索引torch.argmax(input, dimNone, keepdimFalse)_, predicted torch.max(outputs.data, 1).data.detachunsqueeze()squeeze()命令目录 .item() 只是一个值 (浮点型的),适合…

计算机基础知识(基础入门小白专属)三

♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一 起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,…

精通MyBatis原理,看这两篇就够了!|原创

本文详细介绍了阅读MyBatis源码的学习思路,并且对源码做了详细注释,讲解了整个Mybatis的启动过程。本文篇幅较长,建议收藏阅读,非常适合用于面试前的重点复习。点击上方“后端开发技术”,选择“设为星标” &#xff0c…

BSV 上的零知识隐私机器学习

此前,我们已经演示了在 BSV 上运行一个成熟的深度神经网络,其中机器学习 (ML) 算法的输入和模型都是公开的。在实践中,通常希望将输入或模型保持在链下并因此保持私有,同时仍确保 ML 算法如实运行。我们通过将零知识证明 (ZKP) 应…

你确定没有滥用 goroutine 吗

写在前面 学习 golang ,路还很长呢,犹记得刚开始学习 golang 的时候,写起来确实非常简单,有很多包和工具使用,不需要重复造轮子,但是要真的学好一门语言作为工具,对于其原理是非常有必要学懂的…

极限多标签学习综述(Extreme Multi-label Learning)

A Survey on Extreme Multi-label Learning 先给地址: https://arxiv.org/abs/2210.03968 博主曾整理过Multi-Label Image Classification(多标签图像分类),但这类任务中所用的数据集往往较小,分类数量并不多。但在更…

JavaScript的原型链

JavaScript的原型链 JavaScript的继承主要是通过原型链实现的,所以理解原型链是掌握JavaScript继承的关键一环。原型链的继承的基本思想是通过原型链继承多个引用类型的属性和方法。 理解原型链 关于原型链的定义与理解: 每个构造函数都有一个原型对…

Python实现将位图描摹为彩色矢量 svg 图片的源代码,Python实现位图转彩色矢量代码

Color Trace 这是一个将位图描摹为彩色矢量 svg 图片的程序,是一个命令行工具,使用 Python 脚本实现,运行环境 Python3.8。 ✨ 效果 以一个字帖图片为例,这是 png 格式的位图(370KB): 这是颜…

多智能体强化学习环境【星际争霸II】SMAC环境配置

多智能体强化学习这个领域中,很多Paper都使用的一个环境是——星际争多智能体挑战(StarCraft Multi-Agent Challenge, SMAC)。最近也配置了这个环境,把中间一些步骤记录下来。2022.12.26 文章目录1 环境介绍1.1 相关论文1.2 项目代码地址2 安装过程3 相关…

2023年pmp的考试时间是什么时候?(含pmp资料)

不出意外,按照原计划,就是3、6、9、12月,22年11月延期考试地区的考生或者退考的估计会在3月或者6月考。具体就及时关注官网消息。 ​新版中文报名网站:中国国际人才交流基金会 这里说一下PMP的基本考试情况: 【考试注…

模型实战(2)之YOLOv5 实时实例分割+训练自己数据集

模型实战(2)之YOLOv5 实时实例分割训练自己数据集 本文将详解YOLOv5实例分割模型的使用及从头训练自己的数据集得到最优权重,可以直接替换数据集进行训练的训练模型可通过我的gitcode进行下载:https://gitcode.net/openmodel/yolo…

使用matplotlib画图 + python色彩大全

目录画线画点散点画点的形状、线的形状画点线在特定位置写文字plt.legend()中图例的位置方法一 plt.legend(loc4)方法二 plt.legend(bbox_to_anchor(num1, num2))方法三 bbox_to_anchor(1.05, 1), loc2, borderaxespad0保存图片指定图片大小网格线根据自己的需求做了一个画图的…

图的最短路径

文章目录单源最短路径-Dijkstra算法单源最短路径--Bellman-Ford算法多源最短路径--Floyd-Warshall算法单源最短路径-Dijkstra算法 针对一个带权有向图G,将所有结点分为两组S和Q,S是已经确定最短路径的结点集合,在初始时为空(初始…

如何使用监控诊断工具Arthas(阿尔萨斯)

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信…