我有一个azure容器,其中包含按日期命名的目录(例如20201203包含2020年12月23日创建的所有文件)。目录中的文件是这样命名的: {filename}{format}{extension} 对于目录20201203的例子,我有这3个文件:
我想获得特定于一个文件名的所有blobs(因此所有文件都有不同的格式)。< code>CloudBlobContainer对象的方法< code>ListBlobs()可以采用过滤blobs的字符串参数。问题是在我的例子中,我有一个< code>CloudBlobDirectory对象,而不是< code>CloudBlobContainer。< code>CloudBlobDirectory对象的< code>ListBlobs()方法没有使用简单字符串参数作为前缀筛选器来获取特定blobs的重载。我当然可以用< code>var blobs = myAzureDirectory检索目录中的所有blob。ListBlobs(),然后检查每个blob的名称是否以我要查找的名称开头。但是这样做的性能会很差,因为我在每个目录中都有很多文件,并且有很多目录要处理。
有好的方法吗?谢谢
众所周知,Azure存储SDK基本上基于Azure REST API,例如,list<code>ListBlobs()前缀参数在这里没有帮助。
您的方法性能不佳的原因是由于循环查询您的所有虚拟目录:一个循环意味着一个HTTP请求,正如您所说,您的容器中有许多目录,这导致了性能不佳。
实际上,你可以从你的容器中获取所有blob的列表,然后自己过滤blob,基本上,这里只有一个HTTP请求,本地过滤blob比API调用快得多。尝试下面的代码:
using Microsoft.WindowsAzure.Storage;
using System;
namespace sdkv11
{
class Program
{
static void Main(string[] args)
{
var connstr = "<connection string >";
var containerName = "<your container name>";
var filePrefix = "<file prefix>";
var storageAccount = CloudStorageAccount.Parse(connstr);
var container = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
var blobs = container.ListBlobs(useFlatBlobListing: true);
foreach (var blob in blobs) {
var fileName = blob.Uri.LocalPath.Substring(blob.Uri.LocalPath.LastIndexOf("/") + 1);
if (fileName.StartsWith(filePrefix)) {
Console.WriteLine(blob.Uri);
}
}
Console.ReadKey();
}
}
}
结果:
正如标题所说,我有一个问题。我有两个数组。一个长度是五个。另一个长七个。 即使两个数组中的对象不同,如果数组中的所有对象具有相同的id,则将判断为具有相同的对象。 关于javascript有很多答案,但似乎关于java的答案并不多。任何遇到相同问题的人都可以分享解决方案。如果您对我的问题有任何类似的问题,请分享。非常感谢。 以下是我的尝试和样本数据。 列表的5个对象是这个。 如果manName不同
我有一个大约英语单词及其初始频率的列表。我想写一个单词完成建议程序,它将返回一个最大单词列表,从给定前缀开始,按频率降序排序。数据结构还应该能够将一个单词的频率计数更新1(无论何时使用一个单词)。 例如,给定'engin'作为前缀,并且,它应该返回这样的列表-{17,“engine”}、{10,“engineer”}、{4,“engineering”} 的值应在[1,15]范围内。 如果按频率排序
如何更改pandas数据框的列标签: 到
我有JSON响应: 1个用户的POJO/DTO类: 和类的整个反应: 我可以在Map中检索值,然后在代码中手动解析/Map,就像Jackson JSON Map键一样,作为包含对象的属性 还有@JsonAlias用于多个命名变化,但它映射到一个对象。 是否有其他方法可以将提供的前缀的JSON值映射/分组到列表中?
问题内容: 如何仅列出具有给定前缀()的数据库? 例: 输出: 预期产量: 奖金: 在我的情况下,可以在不定义new 的情况下创建数据库吗? 我的目标是仅在具有前缀的数据库上运行查询,所以可能存在比列出数据库更好的解决方案,然后在每个数据库上运行查询吗? 问题答案: 只需按表示数据库名称的属性进行过滤。要列出以给定前缀开头的数据库,可以使用regexp为: 其他过滤器选项在命令页面上列出: 您可以
问题内容: 我正在寻找一种用于处理.dbo前缀的高性能默认策略。 我意识到dbo。前缀不仅是语法上的噪音,但是我在过去8年的基于MS的开发过程中都跳过了键入dbo的过程。前缀并忽略其功能。 除了存储的proc编译锁的性能问题之外,还有在SQL查询和存储过程中跳过键入“ .dbo”的缺点吗? 进一步的背景知识:我所有的开发都是基于Web中间层的,并具有基于中间层服务帐户的集成安全性。 问题答案: [