如何确定HPCC集群中作业提交的来源?
确定HPCC作业提交来源的方法
1. 自定义Workunit元数据标记
HPCC原生Workunit没有提交来源属性,但可以通过自定义字段主动标记:
- 手动提交(ECL IDE/ECL Watch):提交作业时手动添加
SubmitSource属性,值设为Manual/IDE/Watch - 外部cron任务:在提交脚本中用
ecl submit --attribute SubmitSource=CronJob your_job.ecl命令注入标记 - 动态ECL提交:通过ESP REST API提交时,在请求体的
attributes字段加入SubmitSource=DynamicECL - 目录触发提交:在文件监听触发脚本里,给提交的作业添加
SubmitSource=DirectoryTrigger属性
2. 结合日志与Workunit字段分析
- 查看
thor.log或roxie.log:日志会记录作业提交的上下文,比如cron任务的脚本路径、目录触发的文件路径 - 关联
Owner字段:cron提交的作业Owner通常是执行脚本的系统用户,手动提交则对应ECL Watch/IDE的登录用户
3. 审计日志提取上下文
HPCC的Audit数据集(可通过STD.System.Audit.AuditList查询)记录了作业提交的详细信息:
- 提交请求的来源IP
- 客户端类型标识(比如ECL IDE、ESP API)
- 可以将审计日志与Workunit的WUID关联,反推提交来源
动态构建数据-代码关联矩阵的建议
1. 嵌入代码元数据
在ECL代码中通过注释标记文件类型,方便后续扫描提取:
// @InputType: SourceFile // @FilePath: /raw/source/user_data.csv SourceData := DATASET('/raw/source/user_data.csv', RECORDSTRUCT(...)); // @OutputType: BaseFile // @FilePath: /base/final/user_profile.ds FinalBase := OUTPUT(CleanedData, '/base/final/user_profile.ds', ...);
用Python/Perl脚本或HPCC自带的ECL解析工具扫描代码,提取这些标记信息。
2. 自动关联作业与文件依赖
- 用
STD.System.Workunit.WorkunitFiles获取每个Workunit的输入输出文件列表,结合SubmitSource属性关联提交方式 - 调度类作业可通过
STD.System.Schedule.ScheduleList获取调度频率、触发规则等信息,补充到矩阵中
3. 输出方案选择
- PowerBI报表:将采集到的元数据、文件依赖、调度信息导入PowerBI,建立数据模型,通过可视化图表展示数据生命周期链路、作业分布
- 网页展示:基于HPCC ESP API搭建轻量Web服务,实时查询并展示矩阵数据,支持按产品、作业类型、文件类型筛选
4. 持续维护机制
- 开发定时作业(每日/每周)自动采集最新Workunit、审计日志、文件元数据,更新矩阵
- 制定规范,要求新作业提交必须添加
SubmitSource和文件类型标记,保障数据完整性
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

