experiment-service 目录

功能:执行算法组件获取,实验运行,用户工作流存储及提取功能。
文件功能说明:

Controller层:

ExecutionController.java:负责执行工作流图提交到spark上的相关操作


  • | 函数接受http请求的 api | 函数接受参数 | 函数功能 | | —- | —- | —- | | /flow/run | NodeJson:描述工作流各项信息的字符串,与数据库表中存储的工作流图信息格式一致 | 为指定工作流分配session并执行 | | /flow/node/status | resultUrl :工作流所在的session的url | 轮询工作流状态 | | /flow/node/data/{nodeId} | nodeId:需要进行数据预览的节点的Id(唯一识别) | 处理对于工作流中某节点的“数据预览”请求 | | /flow/node/model/{nodeId} | nodeId:需要进行保存模型的节点Id | 处理对于工作流中某节点的“模型存储”请求 | | /flow/node/evaluation/{nodeId} | nodeId:需要进行模型评估的节点Id | 处理对于工作流中某节点的“模型评估”请求 | | /session/status | 无 | 函数识别在token中携带的session,并轮询session状态判断当前工作是否已完成。 |

InteractiveQueryController.java:主要执行数据的交互式查询工作

函数接受http请求的 api 函数接受参数 函数功能
/query/sql sql:标准的sql查询语句,在前端中给定为筛选条件 按照前端发回的筛选条件过滤指定数据源
/query/readyForData filePath:hdfs中文件的路径 将hdfs中压缩后的orc格式文件取出并进行下载

ModuleController.java:主要执行对已存储的模型与算法的查询及加载工作

函数接受http请求的 api 函数接受参数 函数功能
/module 查询数据库中保存的所有算法节点
/model 从token中识别当前用户,并查询出其保存的模型

StorageController.java:主要执行对用户已存储工作流的curd操作

函数接受http请求的 api 函数接受参数 函数功能
/experiments/description 查询数据库中保存的当前用户工作流信息
/experiments/{experimentIdGET方法 experimentId:该工作流信息的唯一识别id 返回指定的某条工作流信息
/experiments/{experimentId
DELETE方法
experimentId:该工作流信息的唯一识别id 删除指定的某条工作流信息
/experiment
PUT方法
descriptionAndMapInfo:工作流信息 将新工作流信息放入数据库

Service 层:

ExecutionService:对controller层提供的服务进行低层逻辑编写

函数名称 执行功能
generateDataSourceCode 读取数据源的通用代码部分生成
generateSavedModelCode 保存模型的通用代码部分生成
getInputCodeForPrediction 预测函数输入代码部分生成
getInputCode 判断算法的输入参数
getInnerCode 获取代码段的main部分
getAttrsCode 获取字段名
getOutPutCodeForML 生成机器学习所需依赖代码
getOutPutCodeForEvaluation 生成模型评估部分代码
executeFlow 执行给定工作流
generateCode 代码拼接
getOutPutCode 生成输出部分代码

Entity 实体类:

实体文件名 实体功能 包含实体
edgeinfo 存储工作流图边信息 /* 边的 id */_String id;

int index;

/ 源组件id /String source;

/
源组件锚点位置 /int sourceAnchor;

/ 目标组件id /String target;

/
目标组件位置 /_int targetAnchor;
ExperimentDescription 用户工作流的描述信息 String experimentId;工作流id
String userId;用户id
String title;工作流名称
String description;工作流描述
ExperimentMapInfo 用户工作流的详细信息
String experimentId;工作流id,与ExperimentDescription中一致
String userId;用户id,与ExperimentDescription 中一致
ArrayList nodes;//节点集
ArrayList edges;//边集
HeaderAttribute 用户数据某一列属性描述信息 private String colName;//列名
private String modifiedColName;//是否已被修改,若未修改则与列名保持一致

private String dataType;//数据类型
private String modifiedDataType;;//是否已被修改,若未修改则与原数据类型保持一致

private boolean selected;//是否已被选择
MetaData 文件头信息集合 String fileName;//文件名
String modifiedFileName;;//是否已被修改,若未修改则与文件名保持一致
String path;//文件路径
List headerAttributes;//列名属性集合
String previewData;//预览样本数据
LivySessionInfo 已分配livy session信息集合 private String livyAddr;//livy地址
private int id;id
private String state;//session当前状态
SavedModel 已保存的模型信息 String modelId;//模型id
String userId;//所属用户
String name;//模型名称
String elabel;//模型标签
String algorithmType;//模型所属算法

filesystem-service 微服务

功能:执行数据压缩,数据curd及用户星标文件操作

Controller层:

CommonFilesController.java :用于处理用户星标文件的相关逻辑,星标文件为用户常用的数据源,能够直接在组件栏里作为组件拖出,无需指定其在hdfs上的路径。

函数接受http请求的 api 函数接受参数 函数功能
/common-files 根据token中携带的用户id,请求用户的星标文件列表
/common-files/set path:需要被设定的星标文件所在路径 将当前用户的指定文件设定为星标文件
/common-files/cancel path:需要被设定的星标文件所在路径 取消已被设定为星标文件的星标

DirectoryController.java:用于处理用户在hdfs上文件夹的相关逻辑

函数接受http请求的 api 函数接受参数 函数功能
/ls/common 根据token中携带的用户id,请求用户的星标文件列表
/ls path:当前文件夹路径 列出指定文件夹下所有文件
/mkdir path:需要创建的新文件夹路径 在指定路径上创建一个新文件夹

HdfsFileController.java:用于处理用户的hdfs相关逻辑

函数接受http请求的 api 函数接受参数 函数功能
/file(post方法) 上传文件流 将文件流上传至平台
/file/confirm metadata:用户执行修改后的文件头 文件上传平台进行确认,并允许用户选择文件的一部分列进行上传
/(delete方法) path:需要删除的文件路径 在hdfs上删除指定文件

Service 层:

HdfsService:对controller层提供的服务进行低层逻辑编写,在代码每个函数的开头均提供了javadoc式的说明文档。
Entity 实体类:

实体文件名 实体功能 包含实体
MetaData 存储文件描述信息 String fileName;//文件名
String path;//文件路径
List headerAttributes;//列属性集合
String previewData;//用于预览的小样本数据
LivySessionInfo 已分配livy session信息集合 private String livyAddr;//livy地址
private int id;id
private String state;//session当前状态

gateway微服务

gateway服务不提供业务逻辑服务,而是作为其他服务的基础,所有的请求在进入其他服务之前会被gateway服务拦截,gateway服务会解析请求中的header中的token字段,查验其是否合法与是否过期,如否则予以拒绝。

livy-service 微服务

功能:对在分布式集群中创建的livy session进行管理。 livy session如同docker的容器一样,为一个用户的一样代码提供一个单独的运行环境,避免重复创建sparksession的冗余过程。

Controller层:

outputController.java :用于处理用户指定获取某一节点的代码输出逻辑

函数接受http请求的 api(均为post方法) 函数接受参数 函数功能
/output/evaluation livySessionInfo 输出本session中训练的模型评估结果
/output/schema livySessionInfo 输出本session中的数据文件头
“/output/csv” livySessionInfo 输出本session中的csv文件

SessionController.java:用于处理session相关的业务

函数接受http请求的 api 函数接受参数 函数功能
/session GET方法 创建一个新的livysession给当前用户
/session/status POST方法 livySessionInfo 更新当前session状态
/session/code POST 方法 code:需要运行的代码 在livysession上新提交一个代码

Service 层:
对controller层提供的服务进行低层逻辑编写,在代码每个函数的开头均提供了javadoc式的说明文档。

login-service 微服务

login-service仅提供登录服务,包括在用户登录后赋予或刷新一个独有的token以保证只有合法的用户能够访问,同时因为token的存在也提供在expiretime时间内免登陆的服务。