使用Azure Batch

时间:2017-08-04 10:04:14

标签: c# azure azure-batch custom-activity

我正在尝试编写一个自定义.NET活动,该活动将从Azure Data Factory运行。它将完成两项任务,一个接一个:

  1. 它将每天从FTP服务器下载grib2文件(grib2是气象数据的自定义压缩)
  2. 它将在下载时解压缩每个文件。
  3. 到目前为止,我已经设置了一个Azure批处理,其中包含一个带有两个节点的池 - Windows Server计算机,用于运行FTP下载。节点正在将grib2文件下载到blob存储容器中。

    到目前为止,自定义应用的代码如下所示:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    using Microsoft.Azure;
    using Microsoft.Azure.Management.DataFactories.Models;
    using Microsoft.Azure.Management.DataFactories.Runtime;
    
    namespace ClassLibrary1
    {
        public class Class1 : IDotNetActivity
        {
            public IDictionary string, string Execute(
                    IEnumerable linkedServices,
                    IEnumerable datasets,
                    Activity activity,
                    IActivityLogger logger)
            {
                logger.Write("Start");
    
                //Get extended properties
                DotNetActivity dotNetActivityPipeline = (DotNetActivity)activity.TypeProperties;
    
                string sliceStartString = dotNetActivityPipeline.ExtendedProperties["SliceStart"];
    
                //Get linked service details
                Dataset inputDataset = datasets.Single(dataset = dataset.Name == activity.Inputs.Single().Name);
                Dataset outputDataset = datasets.Single(dataset = dataset.Name == activity.Outputs.Single().Name);
    
                /*
                    DO FTP download here
                */
    
                logger.Write("End");
    
                return new Dictionary string, string();
            }
        }
    } 
    

    到目前为止我的代码工作正常,我将文件下载到我的blob存储帐户。 现在我已经下载了文件,我希望批处理池的节点解压缩文件并将解压缩的文件放入我的blob存储中以便进一步处理。 为此,使用了wgrib2.exe,它附带了一些dll文件。我已经压缩并将所需的可执行文件和所有dll文件上传到我的池中。如果我是正确的,当每个节点加入池时,将提取此可执行文件并可用于调用。

    我的问题是:我如何编写自定义.NET活动,以便我的池节点下载文件,每次下载文件后,在每个文件上运行解压缩命令将其转换为csv文件?这个命令行看起来像:

    wgrib2.exe downloadedfileName.grb2 -csv downloadedfileName.csv 
    

    如何处理每个下载文件的名称,如何在节点上进行处理并将其保存回blob存储?

    另外,如何控制同时下载的文件数量以及同时解压缩的文件数量?

0 个答案:

没有答案