数据提取概述
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可实现工具跨平台。