我想弄清楚如何从ADLS 2存储blob目录下载文件-我只有一个SAS URL到所述目录,我想递归下载该目录中的所有文件,希望是并行的。
在给定存储凭据的情况下,如何做到这一点非常清楚,并且有许多示例显示如何做到这一点-但我找不到任何使用SAS URL的示例。
任何线索或文档链接将不胜感激!这是我现在的工作方式,但是每当我将其更改为ReadToAsync,或者尝试使用ParallelForEach,ParallelForEachAsync或信号量下载时,对Read/ReadAsync的调用都会崩溃。有没有更好的办法?我应该放弃库,而只是对REST API进行webrequest吗?:
DataLakeDirectoryClient directoryClient = new DataLakeDirectoryClient(_containerSasUri);
if (directoryClient.Exists())
{
foreach (var blob in directoryClient.GetPaths(true))
{
if (blob.IsDirectory.HasValue && !blob.IsDirectory.Value)
{
blobClient.ReadTo(Path.Combine(downloadPath, blob.Name),
new DataLakeFileReadToOptions() { TransferOptions = new() { MaximumConcurrency = 10 } });
}
}
}
1条答案
按热度按时间gmxoilav1#
使用C# Azure.Storage.Files.DataLake下载datalake blob(理想情况下是并行的)
我已经在我的环境中复制了,并得到了预期的结果如下:
Inside ADLS Account:
Code:
Output: