数据 ETL 任务流
数据 ETL 用于在平台上对接外部数据中台,编排并触发数据 ETL 操作。它是专用于数据 ETL 的任务流:对接数据中台之后,在此处添加数据 ETL 任务流,拖拉拽 ETL 任务模板编排任务节点。
这里只负责编排任务节点,实际的数据 ETL 任务运行仍在二次开发时对接的外部调度/任务系统上。
这是一种特化的任务流(DAG)编排,编排交互与通用 ML 任务流类似,可对照 任务流编排;可拖拽的节点模板含义见 任务模板总览。
入口:「数据 ETL」。后端模型
ETL_Pipeline(表名etl_pipeline),视图etl_pipeline_modelview。每条任务流有「计算引擎(workflow)」字段,取值etl或data_analysis:data_analysis为 CubeStudio 内置的数据分析任务流,etl用于对接外部调度系统(myapp/views/view_etl_pipeline.py:248,247)。
新建与编排
点击「数据 ETL」的「新建任务流」,再点击新建好的任务流名称链接,即可进入 pipeline 编排界面(链接指向 /etl_pipeline_modelview/api/web/<id>,见 myapp/models/model_etl_pipeline.py:41)。

生成的任务流编排信息会自动保存为 JSON 格式存入数据库(ETL_Pipeline.dag_json 字段,myapp/models/model_etl_pipeline.py:30),在任务流详情界面可以查看该 JSON。

下图是一个典型的 ETL 任务流。左侧边栏有一系列可进行 ETL 操作的模板,拖拉拽需要的模板并配置每个任务节点,即可完成数据中台的数据入库、数据 ETL、数据出库等操作。

ETL 任务模板
ETL 编排界面内置的任务模板分为四组(myapp/views/view_etl_pipeline_etl.py:123,125):
- 绑定任务:已存在任务、xx 平台任务流
- 出库入库:hdfs 入库至 hive、hive 出库至 hdfs、hdfs 导入 cos、cos 导入 hdfs
- 数据计算:SparkScala、SQL
- 脚本执行:pyspark、shell
说明:早期文档曾称「主要是使用 hadoop、sparkjob 等任务模板来实现」,但 ETL 任务流的内置模板实为上列四组(
myapp/views/view_etl_pipeline_etl.py:123、:128-900),并无名为hadoop/sparkjob的模板。仓库另有通用 ML pipeline 的hadoop、spark、datax任务模板(job-template/job/),与此处 ETL 任务流的内置模板不是同一套。除内置模板外,还可通过二次开发扩展模板。
对接数据中台、数据 ETL 的各类模板,除了平台内置的,还可以通过二次开发增加模板(参见「二次开发」相关文档)。
运行与跟踪
任务流提交后会产生运行实例(ETL_Pipeline_Run,表名 etl_pipeline_run)。列表页可查看每次运行的状态、耗时,并通过「跟踪」查看各 DAG 节点的状态、日志与数据预览(myapp/models/model_etl_pipeline.py:116-151)。