复制时在Azure Blob存储中连接多个文件

时间:2017-12-04 18:11:05

标签: azure azure-storage-blobs

我需要将一定数量的Azure blob从一个文件夹复制到另一个文件夹,以便下游服务可以使用它们。我一直在使用Azure数据工厂(ADF)活动“复制”来做到这一点。

最近需求已更改,其他服务希望将文件连接到一个文件中(文件夹中的所有文件都是具有相同布局的文本文件)。我无法在ADF Copy活动中看到任何选项来执行此操作。有没有办法使用ADF活动实现这一点,而不是在PowerShell或类似的程序中编写脚本?

1 个答案:

答案 0 :(得分:0)

绝对可能。您需要创建自定义ADF管道组件并实现IDotNetActivity接口,更精确

    public IDictionary<string, string> Execute(IEnumerable<LinkedService> linkedServices,
                IEnumerable<Dataset> datasets, Activity activity, IActivityLogger logger)
            {
//PipelineConfiguration( ... ) // configure your pipeline/activity
// some code if needed 
            do
            {
                BlobResultSegment blobList;
                // Get the list of input blobs from the input storage client object.
                blobList = prodAzureStorageClient.ListBlobsSegmented($"{fileContainer}/{fileMask_ifAny}",
                                                                        true, // Use flat blob listing 
                                                                        BlobListingDetails.Metadata,
                                                                        null, // Max results, null = 5000
                                                                        continuationToken,
                                                                        null, // Blob request options
                                                                        null  // Operation context
                                                                    );
                blobs.AddRange(blobList.Results);

                continuationToken = blobList.ContinuationToken;
            } while (continuationToken != null);

// Read files here and concatenate them by you rules

// Upload concatenated file to Azure Blob Storage
    }

问候