这是我第一次使用Azure存储和ORC。
以下是我到目前为止学到的东西,我可以从Azure下载一个ORC blob存储文件并保存到磁盘中。下载完成后,我可以使用Python中的pyorc库迭代ORC文件。它们大多是较小的文件,可以很容易地装入内存。我的问题是,与其将blob写入文件,不如将blob保存在内存中并进行迭代,并且可以避免写入磁盘。我可以将blob下载到流中,但我不知道如何在blob流中使用pyorc,或者找不到它的帮助。
我感谢任何帮助和最佳实践的天蓝色存储下载。
发布于 2021-03-23 15:51:46
我要感谢许吉姆的解决方案,如果有人感兴趣的话,我会稍微修改他的解决方案,以满足我的需要。
from azure.storage.blob import ContainerClient, BlobClient
from io import BytesIO
import pyorc
containerClient = ContainerClient.from_connection_string(azureConnString, container_name=azureContainer)
blobList = containerClient.list_blobs(azureBlobFolder)
for fileNo, blob in enumerate(blobList):
blobClient = containerClient.get_blob_client(blob=blob.name)
with BytesIO() as f:
blobClient.download_blob().readinto(f)
reader = pyorc.Reader(f)
print(next(reader))
发布于 2021-03-21 18:06:09
关于这个问题,请参考以下步骤
import pyorc
import io
from azure.storage.blob import BlobClient
key = 'account key'
blob_client = BlobClient(account_url='https://<accountname>.blob.core.windows.net',
container_name='test',
blob_name='my.orc',
credential=key,)
with io.BytesIO() as f:
blob_client.download_blob().readinto(f)
reader = pyorc.Reader(f)
print(next(reader))
https://stackoverflow.com/questions/66724177
复制