数据提取概述
跟据https://whatis.techtarget.com/definition/data-ingestion网页定义:
Data ingestion is the process of obtaining and importingdata for immediate use or storage in a database. To ingest something is to "take something in or absorb something."Data can be streamed in real time or ingested in batches.
数据提取(Data Ingestion)是获取和导入数据以供立即使用或存储在数据库中的过程。 提取某些东西就是“拿走某些东西或吸收某些东西”。 数据可以实时流式传输或分批提取。
实际项目需求
- 从上游系统接口或文件系统获取数据(文件)
- 对指定数据进行筛选
- 对指定数据进行转换
- 传输给下游系统(数据库、数据仓库、数据湖、流式处理接口)
系统设计
- 数据格式
数据提取位于数据湖架构的最下层,用于从上游系统获取数据传输给数据湖,需要实现跨系统分布式查询,对于下游系统也要求兼容各种数据平台和产品。REST API是很多数据系统及平台都支持的功能,而REST架构风格倾向于采用JSON数据格式,所以此系统在向下游系统传输的数据格式倾向于使用JSON数据格式。
- 上游系统
目前识别的系统包括:文件系统、REST API、ElasticSearch查询接口(REST API)
文件系统需支持基本数据格式,如CSV格式、Excel格式,同时也应支持JSON数据格式。对于Excel格式,因其有丰富的展示形式,可能需要进行预处理,比如去除Excel报表中的表头或提取固定Sheet中的数据内容。对于CSV格式需要定义或从文件中提取各字段名称。对于REST API应支持多种形式的验证,如Basic验证和OAuth验证。对于同一REST API可能需要根据不同的参数进行查询,我们需要设计可定制化、可分页查询机制满足其要求。
- 提取/转化
提取规则包括:数据提取包括读取节点设置,用于指定读取的位置,如Excel中的Sheet或单元格位置和JSON数据中的节点位置;读取数据卷尺寸设置,根据数据卷尺寸分页数据集向下游系统传递以满足下游系统对数据接收限制的要求,如某系统可能只能接收2M的文件。
转化规则包括:根据特定字段聚集数据并将其余字段转化为集合,如多条CSV数据根据主要字段合并成一条JSON数据。自定义转换规则,如将数据中的数字1转换为星期一等。
- 数据发送
调用下游系统REST API接口进行数据发送,按配置通过API验证,如Basic或OAuth验证。按数据卷传送数据,如遇发送失败按预先设置重试。可根据配置在请求间按固定时间等待,满足下游系统的调用限制。根据返回状态处理并可通过再运行继续发送任务。
框架选取
因项目技术栈熟悉程度,采用.NET Core创建工具,.NET Core可实现工具跨平台。
原文地址:https://www.cnblogs.com/richardcuick/p/10669821.html