允许数据源 URL 中的占位符

https://blueprints.launchpad.net/sahara/+spec/edp-datasource-placeholders

本规范旨在允许在 EDP 数据源 URL 中使用占位符。

问题描述

常见用例:用户希望两次运行 EDP 作业。现在,使用相同的数据源的唯一方法是在第二次运行作业之前擦除第一次运行的结果。允许 URL 中包含随机部分将允许使用带有随机后缀的输出。

提议的变更

引入可以在 EDP 数据源 URL 中使用的特殊字符串,并将其替换为适当的值。

占位符的建议语法为 %FUNC(ARGS)%。

作为第一步,我建议仅实现两个函数

  • %RANDSTR(len)% - 将被替换为长度为 len 的小写字母的随机字符串。

  • %JOB_EXEC_ID% - 将被替换为作业执行 ID。

占位符不允许出现在协议前缀中。因此,不会产生验证影响。

函数列表以后可以扩展(例如,添加 %JOB_ID% 等)。

在作业执行创建期间,替换占位符后的 URL 将存储在 job_execution.info 字段中。这将允许以后使用它们来查找由特定作业运行创建的对象。

带有占位符的数据源创建请求示例

{
    "name": "demo-pig-output",
    "description": "A data source for Pig output, stored in Swift",
    "type": "swift",
    "url": "swift://edp-examples.sahara/pig-job/data/output.%JOB_EXEC_ID%",
    "credentials": {
        "user": "demo",
        "password": "password"
    }
}

替代方案

不允许占位符。

数据模型影响

job_execution.info 字段(json 字典)还将存储构造的 URL。

REST API 影响

其他最终用户影响

部署者影响

开发者影响

Sahara-image-elements impact

Sahara-dashboard / Horizon 影响

Horizon 需要更新以显示作业执行的实际 URL。作业执行详细信息页面的输入数据源和输出数据源部分将扩展为包含有关所用 URL 的信息。

REST 将不会更改,因为新信息存储在现有的 ‘info’ 字段中。

实现

负责人

主要负责人

alazarev (Andrew Lazarev)

其他贡献者

工作项

  • 实现该功能

  • 记录该功能

依赖项

无。

测试

手动。

文档影响

需要进行文档说明。

参考资料