ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Apache DolphinScheduler 文件参数(File Parameter)完全指南:工作流内跨任务文件传递

Apache DolphinScheduler 文件参数(File Parameter)完全指南:工作流内跨任务文件传递 Apache DolphinScheduler 文件参数File Parameter完全指南工作流内跨任务文件传递【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler文件参数File Parameter是 Apache DolphinScheduler 提供的一种自定义参数类型用于在同一工作流实例内将上游任务工作目录下的文件或文件夹传递给下游任务。通过本文你将掌握文件参数的配置方式OUT 输出与 IN 接收、底层以资源中心DATA_TRANSFER目录为中转的实现原理、命名与清理规则以及用 pydolphinscheduler YAML 一键运行的完整 Demo可在 ETL 数据汇聚、机器学习数据集传递等场景中直接落地使用。什么是文件参数在 DolphinScheduler 中任务之间的数据传递通常依赖参数而文件参数是一种特殊的自定义参数类型typeFILE专门用于在同一条工作流中跨任务传递文件或文件夹。其核心思路是上游任务将工作目录下的文件/文件夹输出方向为OUT并打上标识下游任务通过taskName.KEY的形式接收方向为IN该文件并保存到指定的本地路径。典型的适用场景包括ETL 任务将多个上游任务处理好的数据文件一起汇聚传递给特定的下游任务机器学习场景将上游数据准备任务产出的数据集文件传递给下游模型训练任务。从源码结构看文件参数是自定义参数类型体系的一部分。在 DataType.java 枚举中参数类型依次包含VARCHAR, INTEGER, LONG, FLOAT, DOUBLE, DATE, TIME, TIMESTAMP, BOOLEAN, LIST, FILE其中FILE即文件参数而参数的传递方向则由 Direct.java 枚举定义仅有IN与OUT两个取值。使用方式文件参数与普通自定义参数一样通过任务的自定义参数进行配置。配置入口在任务定义页面点击自定义参数右侧的加号即可新增一条文件参数。无论输出还是接收文件配置都包含四个关键选项选项说明参数名prop任务间传递时使用的标识例如dir-data、file-text接收侧则作为文件保存到的位置名方向directOUT表示输出文件给下游任务IN表示从上游任务获取文件参数类型type选择FILE表示这是一个文件参数参数值valueOUT时为输出的文件路径IN时为上游文件标识格式为taskName.KEY输出文件给下游任务在上游任务中配置方向为OUT、类型为FILE的文件参数即可将指定文件/文件夹输出给下游。以下图为例任务output向下游传递两个文件数据传出文件夹data标记为dir-data下游任务可以通过output.dir-data获取该文件夹传出文件data/test2/text.txt标记为file-text下游任务可以通过output.file-text获取该文件。注意这里value填写的是相对于任务工作目录的路径可以是文件也可以是文件夹文件夹在传输时会自动打包处理详见下文文件夹的打包与解压。获取上游任务的文件在下游任务中配置方向为IN、类型为FILE的文件参数即可接收上游文件参数值的格式为taskName.KEYtaskName上游任务的名称KEY上游任务输出该文件时使用的标识参数名。下图表示任务从上游任务output中获取标识为dir-data的文件夹并保存为本地目录input_dir下图表示任务从上游任务output中获取标识为file-text的文件并保存为本地文件input.txt这里参数名即文件输入后保存的位置工作目录下的相对路径或文件名下游任务的 Shell 命令可直接对该路径执行cat、tree等操作。运行原理与中转机制文件参数并非直接把数据写进任务上下文而是基于资源中心Resource Center作为中转理解这一点对正确使用和排查问题至关重要。依赖资源中心上下游任务间的文件传递依赖资源中心数据统一保存在资源中心DATA_TRANSFER目录下因此必须开启资源中心功能否则文件参数功能无法使用。资源中心支持对接本地文件系统、AWS S3、阿里云 OSS、华为云 OBS、腾讯云 COS 等存储具体开启与配置方式请参考 资源中心配置详情。文件命名规则传输文件在资源中心DATA_TRANSFER目录下的命名规则为DATA_TRANSFER/日期/工作流Code/工作流版本_工作流实例ID/任务名称_任务实例ID_文件名该规则将不同日期、不同工作流、不同实例、不同任务产生的文件数据彼此隔离避免命名冲突也便于按目录回溯与清理。文件夹的打包与解压若传输的数据是文件夹则会先被打包成后缀为.zip的压缩文件再上传下游任务接收到后会自动解压并保存到对应目录即IN参数指定的保存位置。因此下游拿到的是展开后的目录结构可直接按原路径访问内部文件。传递范围与拓扑多级传递如果存在任务链task1 - task2 - task3最下游任务task3也能获取task1的文件数据文件数据保存在资源中心不随任务实例销毁而丢失拓扑灵活支持一对多传输一个上游文件分发给多个下游以及多对一传输多个上游文件汇聚到一个下游。性能注意如果频繁、大量地传输文件传输的数据量会直接影响系统 IO 性能。建议只在确有文件传递需求的场景使用并控制单次传输的文件体积与频率。文件清理文件数据会持续保存在资源中心需要清理时有两种方式在资源中心的DATA_TRANSFER目录下手动删除对应文件夹如果直接按日期子目录删除会删除该日期下所有的文件数据操作前请确认使用resources/data-transferOpen API 接口按删除 N 天前的数据的语义批量清理接口细节见 Open API 文档。完整可运行 Demo以下 YAML 文件定义了一个名为data-transfer的工作流完整演示了输出文件夹 → 接收文件夹与输出文件 → 接收文件两条传递链路。你可以将其保存为data-transfer.yaml到本地然后执行pydolphinscheduler yaml -f># Define the workflow workflow: name: data-transfer run: true # Define the tasks under the workflow tasks: - name: output task_type: Shell command: | mkdir -p data/test1 data/test2 echo test1 message data/test1/text.txt echo test2 message data/test2/text.txt tree . local_params: - { prop: dir-data, direct: OUT, type: FILE, value: data } - { prop: file-text, direct: OUT, type: FILE, value: data/test2/text.txt } - name: input_dir task_type: Shell deps: [output] command: | tree . cat input_dir/test1/text.txt cat input_dir/test2/text.txt local_params: - { prop: input_dir, direct: IN, type: FILE, value: output.dir-data } - name: input_file task_type: Shell deps: [output] command: | tree . cat input.txt local_params: - { prop: input.txt, direct: IN, type: FILE, value: output.file-text }Demo 解读output任务上游创建data/test1、data/test2两个目录并写入文本文件随后定义两条FILE输出参数——dir-data指向文件夹datafile-text指向文件data/test2/text.txtinput_dir任务下游deps: [output]声明IN参数input_dir值为output.dir-data即把上游的data文件夹接收并解压到本地input_dir目录随后cat input_dir/test1/text.txt与cat input_dir/test2/text.txt验证两个文件内容均成功传递input_file任务下游deps: [output]声明IN参数input.txt值为output.file-text即把上游的data/test2/text.txt接收为本地input.txt随后cat input.txt验证传递结果。该 Demo 同时覆盖了文件夹传递与单个文件传递两种形态并展示了taskName.KEY的引用格式以及基于deps的上游依赖声明可以直接作为生产环境文件传递链路的起点模板。【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表