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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 助力工业物联网,工业大数据之ODS层构建:申明分区代码及测试【十】

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

知识点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阶段的内容
  • 运行代码,查看结果

  • 小结
  • 阅读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上的路径是什么?
/data/dw/dwd/one_make/tableName
  • step5:如何实现自动化
  • 遍历表名,对每张表调用自动化建表的方法:数据库名称、表的名称、None【不分全量或者增量】
  • 从Oracle中获取字段名,并实现类型转换
  • 添加表的注释、分区信息
  • 添加表的存储格式
  • 指定表的存储路径
  • 执行SQL语句
  • 代码测试
  • 注释掉 第6阶段的内容
  • 运行代码,查看结果

  • 小结
  • 阅读DWD建表代码及实现测试


相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
16天前
|
监控 供应链 安全
物联网卡在工业领域的应用
物联网卡在工业领域的应用极大地推动了行业的智能化、自动化和高效化进程。以下是物联网卡在工业领域中各操作类型中的具体应用作用:
|
23天前
|
人工智能 数据可视化 API
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
61 2
|
8天前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
22天前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
49 6
基于Python访问Hive的pytest测试代码实现
|
7天前
|
Java C++
代码文件间重复性测试
本文介绍了如何使用代码相似性检测工具simian来找出代码文件中的重复行,并通过示例指令展示了如何将检测结果输出到指定的文本文件中。
|
25天前
|
测试技术 UED
软件测试的艺术:从代码到品质的探索之旅
在数字时代的浪潮中,软件已成为我们生活和工作不可或缺的一部分。然而,高质量的软件背后隐藏着一门鲜为人知的艺术——软件测试。本文将带你走进这门艺术的世界,从基础理论到实践应用,一起探索如何通过软件测试保障产品质量,提升用户体验,并最终实现从代码到品质的华丽转变。
|
18天前
|
敏捷开发 安全 测试技术
软件测试的艺术:从代码到用户体验的全方位解析
本文将深入探讨软件测试的重要性和实施策略,通过分析不同类型的测试方法和工具,展示如何有效地提升软件质量和用户满意度。我们将从单元测试、集成测试到性能测试等多个角度出发,详细解释每种测试方法的实施步骤和最佳实践。此外,文章还将讨论如何通过持续集成和自动化测试来优化测试流程,以及如何建立有效的测试团队来应对快速变化的市场需求。通过实际案例的分析,本文旨在为读者提供一套系统而实用的软件测试策略,帮助读者在软件开发过程中做出更明智的决策。
|
22天前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
49 6
|
24天前
|
测试技术 持续交付
软件测试的艺术:从代码到信心的旅程
探索软件测试不仅仅是发现错误的技术过程,它是一场从编码到用户信心的转化之旅。本文将带你了解如何通过创造性思维和系统方法,将软件测试变成一门艺术,确保产品质量的同时,提升用户对技术的信赖。
34 4
|
27天前
|
人工智能 计算机视觉
AI计算机视觉笔记十五:编写检测的yolov5测试代码
该文为原创文章,如需转载,请注明出处。本文作者在成功运行 `detect.py` 后,因代码难以理解而编写了一个简易测试程序,用于加载YOLOv5模型并检测图像中的对象,特别是“人”类目标。代码实现了从摄像头或图片读取帧、进行颜色转换,并利用YOLOv5进行推理,最后将检测框和置信度绘制在输出图像上,并保存为 `result.jpg`。如果缺少某些模块,可使用 `pip install` 安装。如涉及版权问题或需获取完整代码,请联系作者。
下一篇
无影云桌面