我问我是否可以,但我也想知道我是否应该这样做。
这是我的场景:我正在小批量接收 Avro 序列化消息。我想存储它们以供以后使用 Hive 表和 Avro SerDe 进行分析。我在 Azure 中运行,并将消息存储在 blob 中。我试图避免出现很多小斑点(因为我相信这会对 Hive 产生负面影响)。如果我已经将 Avro 标头写入 blob,我相信可以将 Avro 数据块附加到CloudBlockBlob.PutBlockAsync(). (只要我知道同步标记即可。)
但是,我检查了两个 .NET 库,它们似乎不支持我的方法。(我必须立即编写整个 Avro 容器文件)。
我采取的方法正确吗? 我在图书馆里错过了什么吗?
我的问题与此类似(但不同): 您可以将数据附加到现有的 Avro 数据文件吗?
我在 Azure Blob 存储中有不同类型的音频文件(wav、mp3...)。我想流式传输它们,但我也想从音频文件中的特定位置流式传输它们。例如,我希望一个流在文件的 0:00 秒开始,另一个流在文件的 01:15 秒开始。
这有可能吗?我知道有“DownloadRangeToStream”方法。用这个方法可以实现吗?即使这有效,我认为偏移量也会出现问题,因为文件头丢失了,对吗?
我将不胜感激任何意见!
感谢您的帮助,新陈代谢
我正在尝试对一个将文件上传到 Azure Blob 存储的类进行单元测试。上传方法作为CloudBlobContainer输入。调用时_storageContainer.Object.GetBlockBlobReference(),会引发 System.NullReferenceException。谁能帮我嘲笑这个?
单元测试代码:
[TestClass()]
public class BlobStorageServiceUploadUnitTest
{
private static BlobStorageService _service;
private static Mock<CloudBlobContainer> _storageContainer;
private static List<FileType> _extensions;
private static int _maxSize;
[ClassInitialize]
public static void Setup_Service(TestContext context)
{
_extensions = new List<FileType> { FileType.Image };
_maxSize = 2048;
_storageContainer = new Mock<CloudBlobContainer>();
_service = new BlobStorageService(new Mock<BEntitiesContainer>().Object, _storageContainer.Object);
}
[TestMethod()]
public void When_FileIsDeleted()
{
var file = CreateMockFile("test.jpg", 500000);
var blob = _storageContainer.Object.GetBlockBlobReference("deleteTest.jpg");
blob.UploadFromStream(file.Object.InputStream);
_service.DeleteFromStorage("deleteTest.jpg");
var blobs = _storageContainer.Object.ListBlobs();
Assert.AreEqual(0, …Run Code Online (Sandbox Code Playgroud) 我使用 Azure SAS URL 将文件上传到 Blob 存储:
var blockBlob = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl));
blockBlob.UploadFromFile(filePath);
Run Code Online (Sandbox Code Playgroud)
该文件存在于我的磁盘上,并且 URL 应该是正确的,因为它是从 Windows Store Ingestion API 自动检索的(并且,如果我稍微更改 URL 签名部分中的一个字符,上传会失败并显示 HTTP 403)。
然而,在检查时
var blobs = blockBlob.Container.ListBlobs();
Run Code Online (Sandbox Code Playgroud)
结果是Count = 0,所以我想知道是否上传成功?不幸的是,该UploadFromFile方法(与该UploadFromStream方法类似)没有返回类型,因此我不确定如何检索上传的结果)。
如果我尝试使用Azure 存储资源管理器连接到 SAS URL ,则列出 Blob 容器会失败,并显示错误“身份验证错误。签名字段格式不正确”。我尝试使用 URL 转义 URL 的签名部分,因为这似乎是在某些类似情况下出现该错误的原因,但这并不能解决问题。
有什么方法可以检查 blob 上传的状态吗?有人知道为什么无法使用 Azure 资源管理器连接自动生成的 URL(由 Microsoft 的官方 API 之一提供)吗?
Azure Blob 存储是否支持用于引用位置或文件的别名?
我有 Azure 订阅,想知道 Blob 存储在引用位置或文件时是否支持别名
如果文件像这样可用 - /storage/container/folderA/fileA
我想做这样的事情 -/foo/pointertofileA
如果我访问上面的网址,这仍然允许我检索文件
我有一种将文件添加到 Azure Blob 存储的方法,问题是我试图指定一个条件,在该条件下它不会覆盖 blob,而只是添加到其中。我正在尝试使用参数访问条件,但是 VS 说此方法不能采用两个参数 - async void archiveNewImportedImages(List imageFiles) {
// Saving the images
// Retrieve reference to a blob named "myblob".
// Create or overwrite the "myblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"C:\Users\rahulchawla\Desktop\FilezilleIMGS\FilezilleIMGS\MTO_Image\CR01-1-20170623-1327.jpg"))
{
await blockBlob.UploadFromStreamAsync(fileStream, accessCondition: AccessCondition.GenerateIfNoneMatchCondition("*"));
}
// save url of the image into a variable and later to the database
/// fileURL = blockBlob.Uri.ToString();
}
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
最终目标:不要覆盖容器 - 继续添加不同的文件,例如。img1.jpg、img2.jpg 转为 blob
其他详细信息:想要将图像附加到容器中(换句话说,继续将图像添加到容器中)。如果文件存在,则不想覆盖现有文件)
S3 有自己定义的重定向元数据:( x-amz-website-redirect-locationWebsiteRedirectLocation )。但我没有看到任何与Azure blob 存储等效的东西。对此是否有任何一流的支持,或者我应该在 blob 元数据中使用自定义键?
(我引用了 golang api,但这只是为了展示一种 API 实现。)
我正在尝试查找 Azure 存储 blob 的 IP 范围。我有一个存储块。我无法将域名列入白名单,因此我正在为此寻找 IP 范围。我的斑点位于 USWEST 地区。
有人可以建议吗?
我们在 WebAPI 中有要求,以 JSON 的形式从外部 API 提取有效负载,清理并将其发布到 Azure Sql 中。对于此要求,我们目前依赖于 blob 存储,将 json 有效负载存储到 azure blob 中,并将其检索到 UI 中以进行数据清理活动。用户可以花费大量时间来验证数据并根据需要进行修改。用户可能会起草几天,并在完成所有清理后单击“导入”按钮。现在,我观察到,在这些草稿期间,blob 只是被检索并反序列化到对象列表中,以找到要更新的相应属性。一旦更新完成,当用户单击“草稿”时,同一列表将被序列化为 json 并存储回 blob。序列化/反序列化的过程似乎很昂贵。相反,我正在考虑用 Cosmos DB 替换 blob。这真的会即兴表演吗?建议 Azure Sql Json 支持是否比所有这些选项更可行?我什至想到了 Redis 缓存?决策的主要因素也是成本效益。
json azure azure-redis-cache azure-blob-storage azure-cosmosdb
我正在查看我的 Azure 存储帐户的账单并尝试了解管理其成本。
目前,我的 blob 成本主要位于“所有其他操作”类别下。有没有办法查看这些操作是什么?
我想降低此成本,因此目标是更新我的应用程序,以便减少执行这些操作,但我需要首先确定它们是什么。
下面是我从成本分析中得到的图表。(存储账户、累计成本、按米分组)