【问题标题】:Cannot create Append Blobs in Azure Data Lake Gen2 using python azure-storage-file-datalake SDK无法使用 python azure-storage-file-datalake SDK 在 Azure Data Lake Gen2 中创建追加 Blob
【发布时间】:2021-10-26 19:12:34
【问题描述】:

我的用例要求我不断地将传入消息写入存储在 Azure Data Lake Gen2 存储帐户中的文件中。我可以通过触发一个函数来创建文件,该函数使用 python azure-storage-file-datalake SDK 与存储帐户进行交互。

问题是,默认情况下,使用 DataLakeFileClient 类的 create_file() 方法创建的文件是块 Blob(并且没有任何参数可以更改创建的 Blob 的类型),这意味着我无法附加数据新消息到达后发送给他们。

我曾尝试使用 python azure-storage-blob SDK,但是它无法使用路径来定位我的 Data Lake 容器中的文件。

这将是我如何创建文件的一个示例,尽管这些文件是以块 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)

感谢我能得到的任何帮助,谢谢!

【问题讨论】:

  • 您的问题解决了吗?我正在努力解决 java 中的类似问题...

标签: python azure azure-blob-storage azure-data-lake-gen2


【解决方案1】:

如果要在 Azure Data Lake Gen2 帐户中创建附加 blob,则需要使用 azure-storage-blob 包而不是 azure-storage-file-datalake

azure-storage-file-datalake 包是 Azure Data Lake Store REST API 的包装器,它不允许您指定 blob 类型。

【讨论】:

  • 嗨@Gaurav Mantri,感谢您的回复,我尝试使用 azure-storage-blob 包版本 12.9.0b1,虽然它设法创建了一个附加 blob 并将块附加到它,它完全消除了我的数据湖的文件夹结构,并直接在根文件夹下创建文件。我查看了 BlobServiceClient 类的 create_append_blob 方法的文档,但它似乎没有采用任何参数来计算文件路径。
猜你喜欢
  • 1970-01-01
  • 2019-09-10
  • 2022-11-20
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2020-03-09
  • 2020-01-13
相关资源
最近更新 更多