You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Azure Data Factory后,如何触发C# .exe并读取其输出?

在Azure Data Factory中复用C# .exe的实现方案

核心实现思路:基于自托管集成运行时(Self-Hosted IR)直接运行.exe

由于你需要处理超4GB的大文件,且要直接复用现有.exe,优先选择自托管IR方案——它允许在本地/云虚拟机上直接执行exe,适配大文件处理的性能需求。

步骤1:部署自托管集成运行时

  • 准备一台具备足够磁盘、内存的虚拟机(Azure VM或本地服务器),确保能访问你的TSV存储源(如Azure Blob Storage)和ADF服务
  • 在ADF门户中创建自托管IR,按照向导在目标虚拟机上安装IR代理并完成注册

步骤2:部署.exe及依赖到IR机器

  • 将C# .exe、必要的依赖库复制到IR机器的固定目录,例如 D:\ADF_Processors\MetricsGenerator.exe
  • 配置机器权限:确保IR运行账户拥有该目录的读写权限,以及访问存储账户的权限(可通过存储账户密钥、SAS或Azure AD身份验证配置)

步骤3:在ADF中创建自定义活动触发.exe

  1. 新建ADF管道,添加自定义活动,选择已注册的自托管IR作为运行环境
  2. 配置活动的执行命令:
    • 在Command字段填写exe路径及参数,使用ADF动态内容传递输入输出路径,示例:
      D:\ADF_Processors\MetricsGenerator.exe --input @{activity('GetInputTSV').output.value[0].path} --output @{concat('adls2://your-storage/metrics/output_', utcnow(), '.tsv')}
      
    • 这里的GetInputTSV是你步骤1中获取输入文件列表的活动,动态内容可自动注入具体文件路径
  3. 配置退出代码规则:默认exe返回0标记活动成功,非0则失败,可根据你的exe逻辑调整错误判断逻辑

步骤4:读取exe输出文件

  • 自定义活动执行完成后,exe生成的指标TSV文件会被写入指定路径(如ADLS Gen2/Blob Storage)
  • 后续直接用你已掌握的步骤3逻辑(复制活动/数据流)读取该文件即可

备选方案:基于Azure Container Instance(ACI)托管exe

如果不想长期维护虚拟机,可将exe打包成Docker镜像,通过ACI按需执行:

  1. 用.NET Runtime作为基础镜像,将exe复制到镜像中,构建Docker镜像
  2. 将镜像推送到Azure Container Registry(ACR)
  3. 在ADF中添加容器活动,指定ACR镜像地址,配置执行命令,同时挂载存储卷(用于读写TSV文件)
  4. 活动执行时会自动启动容器运行exe,完成后销毁容器,适合批量处理场景

关键注意事项

  • 处理超4GB文件时,需确保IR机器/ACI实例配置足够的内存和临时磁盘空间,避免OOM错误
  • 若exe需要读取大量文件,可结合ADF的ForEach活动实现批量遍历触发
  • 可在自定义活动中开启日志捕获,通过ADF运行日志查看exe的stdout/stderr输出,方便排查问题

内容的提问来源于stack exchange,提问作者hachiman hikki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:09:56