簡體   English   中英

無法使用 python azure-storage-file-datalake SDK 在 Azure Data Lake Gen2 中創建 Append Blob

[英]Cannot create Append Blobs in Azure Data Lake Gen2 using python azure-storage-file-datalake SDK

我的用例要求我不斷地將傳入消息寫入存儲在 Azure Data Lake Gen2 存儲帳戶中的文件中。 我可以通過觸發 function 創建文件,它使用 python azure-storage-file-datalake SDK 與存儲帳戶進行交互。

問題是,默認情況下,使用 DataLakeFileClient class 的 create_file() 方法創建的文件是塊 Blob(並且沒有任何參數可以更改創建的 blob 的類型),這意味着我不能 append 之后的數據新消息到達。

我已經嘗試使用 python azure-storage-blob SDK,但是,它無法使用路徑在我的數據湖的容器中定位文件。

這將是我如何創建文件的示例,盡管這些文件以 Block Blob 的形式出現:

if int(day) in days:  
    day_directory_client.create_directory()                                     
    file_client = day_directory_client.create_file(f'{json_name}')                                                 
    file_client.append_data(data=f'{str(message_body)}\n', offset=0,  
    length=len(str(message_body)))                                     
    file_client.flush_data(len(str(message_body)))                                     
    write_to_cache(year, month, day, json_path)

感謝我能得到的任何幫助,謝謝!

如果要在 Azure Data Lake Gen2 帳戶中創建 append blob,則需要使用azure-storage-blob package 而不是azure-storage-file-datalake

azure-storage-file-datalake package 是Azure Data Lake Store REST API的包裝器,它不允許您指定 blob 類型。

通過使用 BlobClient 庫在 Azure Datalake Storage Gen2 中創建和 append 一個 blob,我能夠實現您的要求,使用以下代碼:

from azure.storage.blob import BlobClient

#converted a pandas dataframe to csv (your data can be converted to your desired file format)

data=df.to_csv()
sas_url="https://<ACCOUNT_NAME>.blob.core.windows.net/<CONTAINER>/<DIRECTORIES>/<BLOBNAME>?<SAS TOKEN>"
blob_client = BlobClient.from_blob_url(sas_url)
blob_client.upload_blob(data, blob_type="AppendBlob")

在數據湖中創建 append blob 后,您可以在每次要添加值時使用 blob_client.append_block(data) append 文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM