我需要从 Azure 中的 blob 容器读取 JSON 文件,以便在 JSON 文件之上进行一些转换。我看过一些文档和 StackOverflow 答案,并开发了一个 python 代码来从 blob 中读取文件。
我已尝试使用 Stackoverflow 答案之一中的以下脚本来读取 JSON 文件,但出现以下错误
“TypeError:JSON 对象必须是 str、bytes 或字节数组,而不是 BytesIO”
我是 python 编程新手,所以不确定代码中的问题。我尝试使用 download_stream.content_as_text() 但文件读取文件时没有任何错误。
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
from io import BytesIO
import requests
from pandas import json_normalize
import json
filename = "sample.json"
container_name="test"
constr = ""
blob_service_client = BlobServiceClient.from_connection_string(constr)
container_client=blob_service_client.get_container_client(container_name)
blob_client = container_client.get_blob_client(filename)
streamdownloader=blob_client.download_blob()
stream = BytesIO()
streamdownloader.download_to_stream(stream)
# with open(stream) as j:
# contents = json.loads(j)
fileReader = json.loads(stream)
print(filereader)
Run Code Online (Sandbox Code Playgroud) 这是关于 Azure 前门缓存和 Azure CDN 的使用。我有一个 Azure 静态网站,将显示 Azure blob 存储中的数据(主要是办公文件和视频)。Blob 存储中的文件很少会更改。我正在寻找缓存这些文件的最佳方法和最便宜的方法,以便可以快速获取文件。
推荐或支持链接将会有所帮助。
提前致谢。
azure azure-cdn azure-blob-storage azure-front-door azure-static-web-app
我试图将一个34 MB的文件上传到blob,但它提示我一些错误
XML Parsing Error: no element found
Location: http://127.0.0.1:83/Default.aspx
Line Number 1, Column 1:
Run Code Online (Sandbox Code Playgroud)
我该怎么办......如何解决它
我能够上传大小为500KB的小文件..但是我有一个大小为34 MB的文件要上传到我的blob容器中
我试过用它
protected void ButUpload_click(object sender, EventArgs e)
{
// store upladed file as a blob storage
if (uplFileUpload.HasFile)
{
name = uplFileUpload.FileName;
// get refernce to the cloud blob container
CloudBlobContainer blobContainer = cloudBlobClient.GetContainerReference("documents");
// set the name for the uploading files
string UploadDocName = name;
// get the blob reference and set the metadata properties
CloudBlob blob = blobContainer.GetBlobReference(UploadDocName);
blob.Metadata["FILETYPE"] = …Run Code Online (Sandbox Code Playgroud) 我有这样的元数据:
Container: mycontainer
Object: myblob
Content Type: application/octet-stream Charset=UTF-8
Content Length: 26
ETag: "0x8D18C1E18C0CF2C"
Run Code Online (Sandbox Code Playgroud)
我想添加更多元数据,例如:
Meta Century: Nineteenth
Meta Author: Mustafa
Run Code Online (Sandbox Code Playgroud)
添加后应该是:
Container: azure
Object: myblob
Content Type: application/octet-stream Charset=UTF-8
Content Length: 26
ETag: "0x8D18C1E18C0CF2C"
Meta Century: Nineteenth
Meta Author: Mustafa
Run Code Online (Sandbox Code Playgroud)
我需要设置和获取这些元数据的函数?
我正在阅读本教程,但我无法找到一种方法来列出容器下的所有(虚拟)文件夹而不获取所有文件。我的 500 个(虚拟)文件夹中有 26K 个文件。我只想获取文件夹列表,而不必等待几分钟即可获取list_blobs包含整个文件列表的输出。有没有办法做到这一点?或者至少告诉list_blobs不要深入到n容器下方的水平面?
我有很多zip文件,里面有几个文件夹和50多个文件.如何将这些zip文件上传到azure blob,然后将其解压缩到那里.
解压缩服务器中的文件并将其中的文件逐个上传到azure blob将是一个繁琐的过程.
azure有没有简单的方法来实现这一点,还是有任何解决方法?
我在PHP中实现它.
我有以下代码行:
from azure.storage.blob import BlobServiceClient
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
from azure.storage.blob import BlobServiceClient
ImportError: cannot import name 'BlobServiceClient' from 'azure.storage.blob' (/home/user-name/.local/lib/python3.7/site-packages/azure/storage/blob/__init__.py)
Run Code Online (Sandbox Code Playgroud)
我在 PythonAnywhere 和我的本地机器上都有这个错误。我正在关注这里的教程
我已经通读了 github 上的这篇文章,但无济于事。
有什么不见了?我试图实现的目标是当我有一个 URI 和一个共享密钥时访问容器中的 blob。
感谢任何帮助。
python azure azure-storage azure-storage-blobs azure-blob-storage
我有多个 Azure 存储 blob 容器,每个容器都有超过 100 万个 JSON 文件,包括根。无法使用(不会令人震惊),因此尝试使用数据工厂使用文件中的时间戳将它们移动到多个文件夹,以创建 YYYY-MM-DD/HH 文件夹设置为分区系统。但是我尝试过的每种方法都因超时/项目限制过多而失败。需要打开每个文件,获取时间戳,并使用时间戳数据将文件移动到动态路径。想法?
更新:我能够解决这个问题,但我不会称之为“答案”,所以我只会更新问题。为了创建较小的集合,我将管道参数化为接受文件名通配符。然后我创建了另一个使用 0-9,az 数组的管道,将其用作数据集上的参数。蛮力解决方法......假设必须有更好的解决方案,但这现在有效。
这是我的场景:
Microsoft.Azure.Storage.Blob 11.2.0
Microsoft.Azure.Storage.Queue 11.2.0
Micorosoft.Azure.Cosmos.Table 1.0.7
Run Code Online (Sandbox Code Playgroud)
我已经将很多代码从 Azure 函数转移到 Google k8s 和 Google Cloud,运行 Core .Net 应用程序,基本上使用 .net Standard 2.0 中内置的相同库,没有任何问题。
几天后,我注意到 Linux 系统中出现了不同的行为。与 Azure 服务(blob、表、队列)交互的调用很少会超时(子系统似乎失败了,我尝试了不同的重试策略,结果相同)。在 10,000 次调用中,我收到 10 到 50 个错误(或者在我更改超时之前很长的调用 180 秒)。这发生在所有 Azure 服务中:表、blob 和队列。
我尝试了不同的解决方案以找出原因:
在 azure 函数上运行相同的 dll 代码没有任何问题。
所以我得出的结论是,azure sdk 在内部使用的 http 客户端中有一些东西,这取决于您运行代码的操作系统。我想在几篇文章之后它可能是 Keep-Alive 标题,所以我尝试在我的组合根上:
ServicePointManager.SetTcpKeepAlive (true, 120000, 10000);
Run Code Online (Sandbox Code Playgroud)
但没有任何变化。
有什么想法或建议吗?...也许我走错了路,或者我错过了一些东西。
在我的 asp.net mvc 应用程序中,我使用 Microsoft.WindowsAzure.Storage 8.0.1 将 blob 上传/下载到 azure 云容器。现在 NuGet 包管理器通知我 Microsoft.WindowsAzure.Storage 已弃用,我应该使用 Microsoft.Azure.Storage.Blob。
问题:
任何帮助和建议将不胜感激。