文章插图
转载本文需注明出处:微信公众号EAWorld,违者必究 。
引言:传统 ETL 主要以 SQL 为主要技术手段,把数据经抽取、清洗转换之后加载到数据仓库 。但是在如今移动互联网大力发展的场景下,产生大量碎片化和不规则的数据 。政府,公安等行业,传统数据库已经远远无法满足需求 。数据原始文件通过文件导入到基础库,再通过大数据 HQL等技术手段提取出二级库,这中间的数据导入和 SQL ETL 的提取的过程,大量消耗 IO 性能和计算资源,在很多场景下已经是数据处理的瓶颈所在 。
普元在实施公安项目过程中开发了一种基于 XML 描述的可编程的函数 ETL 转换方法 。主要用于大数据文件处理领域,能从原始数据文件直接、快速加载到专题库的技术手段 。技术方案主要解决了用 XML 的技术手段描述数据文件的格式,包含文件字段切分、字段类型、默认值、异常值校验、时间格式校验 。在处理时可添加自行开发的 JAVA UDF 函数,函数实参支持变量、常量、表达式、函数和运算符重载 。同时函数支持多层嵌套,即内部函数的返回值最为外部函数的实参 。该方案实现了 XML 内函数体的语法解析并在运行过程中直接编译为 Java 字节码的技术 。有效的解决了政府、公安、电信行业巨量的数据处理需要的大量计算资源和 IO 性能瓶颈,有效的提高了数据处理效率和降低了数据处理开发难度 。
目录:一、基于 XML 控制文件解析数据文件方案介绍
二、XML 控制文件结构和语法
三、函数和多层嵌套函数传参
四、UDF 函数编写方法
五、数据测试工具
六、FlumeOnYarn 架构和分布式部署
一、基于 XML 控制文件解析数据文件方案介绍对于数据开发项目,我们常常会面临众多的数据对接,部分场景不仅数据量大,且数据种类多,数据解析开发工作量巨大 。对于大量数据对接,一般设计的 RPC 接口和 WebService 一般都达不到数据性能要求的 。并且他们都是点对点的服务,一旦上下游系统故障,都会造成整个数据对接异常 。因此大部分都会选择使用文件的方式进行数据对接 。
文章插图
对于非实时数据对接需求,这种方式的优点:
- 在数据量大的情况下,可以通过文件传输,上游只写入,无需关心数据业务和故障;
- 方案简单,避免了网络协议相关的概念;
- 维护简单,只需保证磁盘写入稳定性即可;
面对大量数据对接和众多的数据类型,我们对于每种数据文件解析、解码、清洗消耗大量的人力,并且基于编码的方式对于较多数据类型的场景代码量大,且难以管理 。因此经过多次数据开发实践,我们开发了一种基于 XML 描述的方式来解析和清洗数据文件的实现 。
本架构实现适合以下几个方面:
- 基于文件的数据对接;
- 文件无法直接导入到目标数据库,需要做转换,清洗为目标格式;
二、XML数据控制文件结构和语法<?xml version="1.0" encoding="UTF-8"?><schema><key>JD_TYPE_V1</key><type>textfile</type><delimiter>,</delimiter><fields><field type="int">exp_flag</field> <field type="string">sender_id</field><field type="string">sender_num</field> <field type="string" value=https://www.isolves.com/it/cxkf/bk/2020-07-14/"unknown">sender_address
推荐阅读
- 常见分布式锁实现方式
- 手机店铺介绍怎么写 淘宝开店宝贝描述怎么写
- 基于CentOS8Linux运维教程-Linux系统用户与组管理
- 淘宝店铺描述写什么 淘宝开店描述下你的店铺这怎么写
- 螃蟹女为什么不能娶?
- 推荐一款适合程序员使用的前端框架ZUI,基于Bootstrap深度定制款
- 基于云落地SLB+Tengine实现高可用集群负载均衡 - 中
- 基于CentOS7编译安装mono环境运行C#程序
- 0785-基于CDP7.1.1的Spark3.0技术预览版本发布
- tcp,icmp,http 基于wireshark报文分析快速过滤报文时延