我需要将一定数量的Azure blob从一个文件夹复制到另一个文件夹,以便下游服务可以使用它们。我一直在使用Azure数据工厂(ADF)活动“复制”来做到这一点。
最近需求已更改,其他服务希望将文件连接到一个文件中(文件夹中的所有文件都是具有相同布局的文本文件)。我无法在ADF Copy活动中看到任何选项来执行此操作。有没有办法使用ADF活动实现这一点,而不是在PowerShell或类似的程序中编写脚本?
答案 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
}
问候