# spark-flow **Repository Path**: default-null/spark-flow ## Basic Information - **Project Name**: spark-flow - **Description**: 基于Spark的大数据管理平台,代码开发中... 多源异构数据的统一抽取、加载、清洗、转换、存储 管理平台。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 3 - **Created**: 2021-12-30 - **Last Updated**: 2025-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大数据处理平台 ## 项目简介 ```md 终极目标:打造多源异构数据的统一抽取、加载、清洗、转换、存储 管理平台;大数据管理平台。 最小目标:打造一款简单的,灵活的,非开发人员都可以使用的,数据清洗工具 灵感来源:Kettle ``` ## 技术架构 ![](doc/架构图.png) ## MVP版本 - 实现json配置文件的解析,加载,执行等 - 实现输入插件 MySQL、CSV、Excel、Hive等数据的读取 - 实现过程清洗组件 增加修改列(UDF)、行过滤等组件的实现 - 实现输出插件 MySQL、CSV、Excel、Hive等数据的写入 ## 示例 flow-core/doc 目录下为示例程序,在此举例说明一个 [csvwriter.json](flow-core/doc/flow/csvwriter.json) 含义:通过CsvReaderPlugin插件读取F_20210404185232.csv文件, 通过ConsolePlugin插件打印10条数据信息,后将数据通过CsvWriterPlugin写入到csv_write.csv文件中 插件读取 ```json { "name": "flow测试", //job 名称 "uuid": "xxxx_xxxx_xxxx", //job唯一编号 "job": [ //job中每个step的定义 { "name": "csv输入_4", //step 名称 "id": "CsvReaderPlugin", //step 对应插件的唯一标识,此id标识csv读插件 "nextList": ["console输出"], //step 流向下一步插件的名称(一个job中,step name必须唯一) "path": "file:/D:/anchnet/spark-flow/flow-core/doc/data/F_20210404185232.csv", "header": "true", "delimiter": ",", "encode": "UTF-8", "schema": "ID,时间,频率", //step 插件配置信息定义 "type": "INPUT" //step 类型(INPUT OTHER OUTPUT ) }, { "name": "console输出", "id": "ConsolePlugin", "showNum": 10, "nextList": ["csv输出"], "type": "OTHER" }, { "name": "csv输出", "id": "CsvWriterPlugin", "delimiter": "|", "path": "file:/D:/anchnet/spark-flow/flow-core/doc/data/csv_write.csv", "nextList": [], "type": "OUTPUT" } ] } ``` ## 组件介绍 ### CSV输入组件 ### CSV输出组件 ## 模块功能 | 名称 | 说明 | |---------------|---------------------------------| | flow-core | 系统核心程序 | | flow-webx | web交互页面,使用拖拽方式实现数据处理流程,类似kettle | | flow-plugins | 实现自定义数据处理组件 | ## 核心依赖 | 名称 | 版本 | 说明 | |-----------|----------------------|--------------------------------| | spark | 3.2.1 | 数据处理核心组件,利用其DataSet数据类型,实现数据清洗 | | asyncTool | 1.4.1-SNAPSHOT(自己编译) | 多线程调度工具 | | hutool | 5.7.17 | Java工具类,也是实现自定义函数组件的关键 | | aviator | 5.2.7 | 高性能jvm脚本引擎 | ## 第三方同类型产品调研 本项目肯定无法和其他大的项目相比,处理的数据量也不会太大,但是本项目会更加关注非技术人员的使用体验,简单,灵活 所以说不定后期准备使用python中的pandas进行完全重构,来保持项目小巧简单 | 名称 | 地址 | 说明 | |------------------|----------------------|------------------------------------------------------------------------------------------| | data-integration | https://github.com/young-datafan/data-integration | DataFan 的初衷是为了打通企业从数据集成 -> 数据开发 -> 数据应用的全流程。将数据集成、数据开发(离线+实时)、数据可视化等平台开源出来,同开源社区一同治理和发展。 | | hop | https://github.com/apache/hop | kettle的升级产品 | | incubator-seatunnel| https://github.com/apache/incubator-seatunnel | SeaTunnel is a distributed, high-performance data integration platform for the synchronization and transformation of massive data (offline & real-time). |