Stark
基于Spark+SparkMLlib+Debezium+Deequ打造的简单易用、超高性能大数据治理引擎。适用于批流一体的数据集成和数据分析,支持CDC实时数据采集、机器学习算法模型、数据质量校验、数据标注、敏感数据识别、数据建模、算法建模和OLAP数据分析
Install / Use
/learn @hexnn/StarkREADME
Stark一站式大数据治理引擎
基于Spark内核的简单易用、超高性能批流一体数据集成和数据分析引擎
- 【开箱即用】零编码,基于规则文件即可完成一站式数据采集、数据建模、算法建模和数据分析等任务
- 【来源丰富】支持关系数据库、NoSQL数据仓库、图数据库、文件等几十种数据源,满足各种数据对接需求
- 【批流一体】支持离线、实时、离线实时混合三种读写模式,离线和实时数据全流程打通
- 【变化捕获】支持CDC变化数据捕获,实时监测数据变化并更新到目标,支持离线与实时数据多源异构融合
- 【信创支持】支持基于X86及ARM架构的国产CPU及操作系统部署,支持达梦、人大金仓等国产信创数据源
- 【机器学习】支持几十种机器学习算法,与各种数据源全流程融合,基于简单配置即可实现复杂的算法模型分析
- 【算法调优】支持机器学习算法参数调优,支持超参动态优化,算法训练及预测过程可观测,让数据更智能
- 【质量校验】内置50+数据质量校验规则,支持对各种离线和实时数据进行数据质量监测,同时生成校验报告
- 【数据标注】支持自动化数据标注,可对100+敏感类型数据进行自动识别,用于数据安全管控和动态脱敏
- 【过程观测】支持单步调试,可监测每一个环节的任务执行情况,了解数据处理过程,核查计算结果和数据质量
- 【性能高效】支持跨数据源单表、多表、多表关联、整库数据采集和数据分析,可利用集群能力处理百亿级数据
- 【易于扩展】基于Stark规则引擎界面化封装,可在极短时间实现整套数据采集、数据建模和数据分析等中台产品
引擎技术架构

数据源读写特性(持续扩展中)
|类型 |数据源 |批模式(读)|批模式(写) |流模式(读)|流模式(写) |CDC(读) |CDC(写) | |:------------|:------------|:--------:|:--------:|:--------:|:--------:|:------:|:------:| |关系型数据库 |MySQL |√ |√ |√ |√ |增,删,改|增,删,改| | |MariaDB |√ |√ |√ |√ |增,删,改|增,删,改| | |Oracle |√ |√ |√ |√ |增,删,改|增,删,改| | |PostgreSQL |√ |√ |√ |√ |增,删,改|增,删,改| | |SQLServer |√ |√ |√ |√ |增,删,改|增,删,改| | |DB2 |√ |√ |√ |√ |增,删,改|增,删,改| |NoSQL数据库 |HBase |√ |√ |√ |√ |增,删,改|增,删,改| | |Phoenix |√ |√ | |√ | |增,删,改| | |Cassandra |√ |√ |√ |√ |增,删,改|增,删,改| | |MongoDB |√ |√ |√ |√ |增,删,改|增,删,改| | |Redis |√ |√ |√ |√ |增 |增,删,改| | |Elasticsearch|√ |√ |√ |√ |增 |增,删,改| |MPP架构数据库 |Impala |√ |√ | |√ | |增 | | |StarRocks |√ |√ | |√ | |增,删,改| | |Doris |√ |√ | |√ | |增,删,改| | |ClickHouse |√ |√ |√ |√ |增,删,改|增,删,改| | |Greenplum |√ |√ |√ |√ |增,删,改|增,删,改| |数据仓库 |Hive |√ |√ | |√ | |增 | |数据湖 |Iceberg |√ |√ |√ |√ |增 |增,删,改 | | |Hudi |√ |√ |√ |√ |增,删,改|增,删,改 | | |DeltaLake |√ |√ |√ |√ |增,删,改|增,删,改 | | |Paimon |√ |√ |√ |√ |增,删,改|增,删,改 | |消息中间件 |Kafka |√ |√ |√ |√ |增 |增 | |图数据库 |Neo4j |√ |√ |√ |√ |增 |增,删,改| |空间数据库 |PostGIS |√ |√ |√ |√ |增,删,改|增,删,改| |文件数据源 |Text |√ |√ |√ |√ |增 |增 | | |CSV |√ |√ |√ |√ |增 |增 | | |Excel |√ |√ |√ |√ |增 |增 | | |JSON |√ |√ |√ |√ |增 |增 | | |XML |√ |√ |√ |√ |增 |增 | | |ORC |√ |√ |√ |√ |增 |增 | | |Parquet |√ |√ |√ |√ |增 |增 | | |Avro |√ |√ |√ |√ |增 |增 | |信创数据源 |OceanBase |√ |√ |√ |√ |增,删,改|增,删,改| | |GaussDB |√ |√ |√ |√ |增,删,改|增,删,改| | |达梦数据库 |√ |√ |√ |√ |增,删,改|增,删,改| | |人大金仓 |√ |√ |√ |√ |增,删,改|增,删,改| |嵌入式数据库 |SQLite |√ |√ |√ |√ |增,删,改|增,删,改| |云原生数据库 |Snowflake |√ |√ | |√ | |增,删,改|
机器学习算法特性(持续扩展中)
|算法类型 |算法名称 |算法简称 |算法描述 |应用场景 | |:-----------:|:------------------------------:|:----------:|:------------------|:---------------------| |统计算法 |Correlation |CORR |相关性检测 |预处理,数据探索,特征选择 | | |ChiSquareTest |CST |卡方校验 |预处理,数据探索,特征选择 | | |Summarizer |SUMMARY |汇总器 |预处理,数据探索,特征选择 | |分类算法 |DecisionTreeClassifier |DTC |决策树分类 |二分类,多分类 | | |FMClassifier |FMC |因子分解机分类 |二分类 | | |GBTClassifier |GBTC |梯度提升树分类 |二分类 | | |LogisticRegression |LRC |逻辑回归分类 |二分类 | | |MultilayerPerceptronClassifier |MLPC |多层感知器分类 |二分类,多分类 | | |NaiveBayes |NBC |朴素贝叶斯分类 |二分类,多分类 | | |RandomForestClassifier |RFC |随机森林分类 |二分类,多分类 | | |LinearSVC |SVC |线性SVM分类 |二分类 | |回归算法 |AFTSurvivalRegression |AFTSR |加速失效时间模型回归 |数据预测 | | |DecisionTreeRegressor |DTR |决策树回归 |数据预测 | | |FMRegressor |FMR |因子分解机回归 |数据预测 | | |GBTRegressor |GBTR |梯度提升树回归 |数据预测 | | |GeneralizedLinearRegression |GLMR |广义线性模型回归 |数据预测 | | |IsotonicRegression |IR |保序回归 |数据预测 | | |LinearRegression |LR |线性回归 |数据预测 | | |RandomForestRegressor |RFR |随机森林回归 |数据预测 | |聚类算法 |KMeans |KMEANS |K均值聚类 |聚类 | | |GaussianMixture |GM |高斯混合模型 |聚类 | | |LDA |LDA |潜在狄利克雷分配 |聚类 | |推荐算法 |AlternatingLeastSquares |ALS |交替最小二乘法 |数据推荐 |
数据质量校验特性(持续扩展中)
|质量维度 |规则参数 |规则描述 |使用示例 | |:--------------------------:|:-----------------------:|:--------------------------------------:|:---------------------------------------------------------:| |完整性(checkCompleteness) |isComplete |校验单个字段非空 |"isComplete": ["id"] | | |areComplete |校验组合字段全部非空 |"areComplete": ["id,name"] | | |areAnyComplete |校验组合字段任一非空 |"areAnyComplete": ["age,birthday"] | | |hasCompleteness |校验单个字段非空比例 |"hasCompleteness": ["age:ratio>0.2"] | | |haveCompleteness |校验组合字段全部非空比例 |"haveCompleteness": ["name,age:ratio>0.2"] | | |haveAnyCompleteness |校验组合字段任一非空比例 |"haveAnyCompleteness": ["name,age:ratio>0.2"] | |唯一性(checkUniqueness) |isUnique |校验字段唯一性 |"isUnique": ["id"] | | |isPrimaryKey |校验字段是否为主键 |"isPrimaryKey": ["id,name"] | | |hasUniqueness |校验单个字段唯一性比例 |"hasUniqueness": ["id:ratio==1"] | | |haveUniqueness |校验组合字段唯一性比例 |"haveUniqueness": ["name,age:ratio>0.5"] | | |hasDistinctness |校验单个字段去重性比例 |"hasDistinctness": ["id:ratio==1"] | | |haveDistinctness |校验组合字段去重性比例 |"haveDistinctness": ["name,age:ratio>0.5"] | | |hasUniqueValueRatio |校验单个字段唯一性比例 |"hasUniqueValueRatio": ["id:ratio==1"] | | |haveUniqueValueRatio |校验组合字段唯一性比例 |"haveUniqueValueRatio": ["name,age:ratio>0.5"] | | |hasNumberOfDistinctValues|校验单个字段去重后的个数 |"hasNumberOfDistinctValues": ["name:number>0 && number<10"]| |准确性(checkAccuracy) |hasSize |校验数据行数 |"hasSize": ["size>0 && size<100"] | | |hasColumnCount |校验字段个数 |"hasColumnCount": ["count>0 && count<10"] | | |hasMin |校验数值型字段的最小值 |"hasMin": ["age:min>=18 && min<=35"] | | |hasMax |校验数值型字段的最大值 |"hasMax": ["age:max>=60 && max<120"] | | |hasMean |校验数值型字段的平均值 |"hasMean": ["age:mean>=18 && mean<=35"] | | |hasSum |校验数值型字段的汇总值 |
