minio+kettle+airflow实现采集数据自动入库
作者:快盘下载 人气:一、minio介绍
Minio 是个基于 Golang 编写的开源对象存储套件;虽然轻量;却拥有着不错的性能。对于中小型企业;如果不选择存储上云;那么 Minio 是个不错的选择;麻雀虽小;五脏俱全。关于minio在服务器上的部署这里不做赘述;网上有很多教程;可以自行搜索。
1.1minio界面
部署好后可以通过minio上传非结构化的数据文件;比如常用的excel表格、图片等。如果我们自己学习用;那可以直接通过xshell等工具;实现数据直接传输到服务器。但是生产环境下经常是需要我们做好程序或者平台;供业务人员使用;因此需要一个文件传输的工作;此处选用minio。
二、kettle介绍
Kettle最早是一个国外开源的ETL工具;全称为KDE Extraction, Transportation, Transformation and Loading Environment。分为商业版与开源版。可以在 Window、Linux、Unix 上运行;绿色无需安装;数据抽取高效稳定。Kettle 中文名称叫水壶。它允许管理来自不同数据库的数据;把各种数据放到一个壶里;然后以一种指定的格式流出。
Kettle几乎支持市面上所有的数据库系统;对于传统数仓来说这是镇海神针,传统数仓分析必备神器。通过提供一个图形化的用户环境来描述你想做什么;而不是你想怎么做。
将需要入数据库的数据通过etl工具来实现;对于数据量小kettle是个不错的选择;上手快;门槛低。
2.1kettle界面
三、airflow介绍
Airflow是一个可编程;调度和监控的工作流平台;基于有向无环图(DAG);airflow可以定义一组有依赖的任务;按照依赖依次执行。airflow提供了丰富的命令行工具用于系统管控;而其web管理界面同样也可以方便的管控调度任务;并且对任务运行状态进行实时监控;方便了系统的运维和管理。
本次采用airflow调度工具;实现自动化数据入库。
3.1airflow界面
四、实现过程
4.1数据上传
首先通过minio上传功能;将数据文件上传至服务器。
4.2kettle进行数据清洗
本次数据文件是excel;以此为例。
整个工作流是这样的;
- 涉及一个作业与做个转换。
- 设置变量;可有可无;
- 当一个作业成功跑完;源文件的会从上传文件夹归并到完成文件夹;如果检查没有对应文件;则改程序直接跳转到成功不继续执行。
- 清空过程表;每次上传的数据首先会写入到过程表中;然后在读取写入到目标表中。
- 导入目标表;没什么好说的;纯sql脚本
- 修改文件;成功后源文件会移动到归档文件夹中
- 失败通知;这个是email通知。
kettle很好操作的;这边讲一下我这个项目的主要几个点;
由于数据是人工采集的;而且没有设置唯一字段;因此;这边需要在入库前对一些字段组合成md5密码;以区分数据是否重复。
update ods.v_stu_temp
set file_uuid = MD5(concat(ifnull(factor_id,;;),ifnull(org_id,;;),ifnull(stat_year,;;),ifnull(num_disciplines,;;)))
从中间表导入到目标表时;sql脚本中添加过滤条件即可;匹配中间表md5编码不在目标表中的则insert写入。
4.3airflow任务调度
最后写好airflow调度脚本;上传至/opt/airflow/dags;dags目录下;然后刷新页面就可以看到web页面端有新的任务;点击启动即可
4.4bi平台数据查看
最后通过bi平台连接数据库;查看数据库数据;实现数据查看
加载全部内容