问题描述
我们在Microsoft Azure中有一个Event Hub实例,该实例将AVRO格式的数据捕获到Blob存储帐户中:
Blob名称为container1/my-test-namespace/my-test-eventhub
,后跟0、1、2或3-然后是日期。
我可以使用ContainerClient python类列出blob:
import os,uuid
from azure.storage.blob import BlobServiceClient,BlobClient,ContainerClient,__version__
print("Azure Blob storage v" + __version__ + " - List blobs in my-test container1")
connect_str = 'DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net'
container_client = ContainerClient.from_connection_string(connect_str,'container1')
blob_list = container_client.list_blobs()
i = 0
for blob in blob_list:
print(str(i) + ":\t" + blob.name)
i = i + 1
if i >= 10:
break
这很好-
但是我想知道如何显示10个最新斑点?
我想列出最近的10个blob,末尾带有“ .avro”。
我在azure.storage.blob文档中进行了搜索,但还没有找到方法。
如果您查看顶部的屏幕截图,会有一个“已修改”列,我想知道它是否可以在python脚本中使用。
解决方法
不幸的是,天蓝色的blob存储sdk中没有sort
方法。
有两种解决方法。
第一个是您可以创建blob触发的azure函数,然后在该容器中创建新的blob时,将相关信息(例如blob_name,creation_time)写入数据库等。然后您可以查询最新的10通过访问数据库来创建blob。到目前为止,建议这样做。
第二个是,您应该列出所有blob,然后编写自己的代码以按creation time
属性对其进行排序。