![](/img/trans.png)
[英]Realtime data analytics using Elastic Stack on data residing in Azure Data Lake Storage Gen2
[英]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.