如何在Event Hub的存储帐户中列出最新的AVRO Blob?

问题描述

我们在Microsoft Azure中有一个Event Hub实例,该实例将AVRO格式的数据捕获到Blob存储帐户中:

event hub

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

这很好-

cmd

但是我想知道如何显示10个最新斑点?

我想列出最近的10个blob,末尾带有“ .avro”。

我在azure.storage.blob文档中进行了搜索,但还没有找到方法

如果您查看顶部的屏幕截图,会有一个“已修改”列,我想知道它是否可以在python脚本中使用。

解决方法

不幸的是,天蓝色的blob存储sdk中没有sort方法。

有两种解决方法。

第一个是您可以创建blob触发的azure函数,然后在该容器中创建新的blob时,将相关信息(例如blob_name,creation_time)写入数据库等。然后您可以查询最新的10通过访问数据库来创建blob。到目前为止,建议这样做。

第二个是,您应该列出所有blob,然后编写自己的代码以按creation time属性对其进行排序。