gpt4 book ai didi

azure - DataLake 锁定同一文件的读写

转载 作者:行者123 更新时间:2023-12-03 04:08:32 27 4
gpt4 key购买 nike

我有 2 个不同的应用程序来处理来自 Data Lake Storage Gen1 的数据。

第一个应用程序上传文件:如果同一天多次上传,现有文件将被覆盖(始终是使用 YYYY-MM-dd 格式保存的每天一个文件)

第二个应用程序从文件中读取数据。

是否有一个选项可以锁定此操作:执行写入操作时,不应进行读取,同样,当发生读取时,写入应等待读取操作完成。

我没有找到任何使用 AdlsClient 的选项。

谢谢。

最佳答案

据我所知,ADL gen1 是与 Hadoop 分布式文件系统 (HDFS) 兼容的 Apache Hadoop 文件系统。于是查了一些HDFS的文档,恐怕无法直接控制读写互斥。请参阅以下文档:

1.link1:https://www.raviprak.com/research/hadoop/leaseManagement.html

writers must obtain an exclusive lock for a file before they’d be allowed to write / append / truncate data in those files. Notably, this exclusive lock does NOT prevent other clients from reading the file, (so a client could be writing a file, and at the same time another could be reading the same file).

2.link2:https://blog.cloudera.com/understanding-hdfs-recovery-processes-part-1/

客户端在写入 HDFS 文件之前,必须获得租约,租约本质上是一个锁。这确保了单作者语义。如果客户希望继续写信,则必须在预定时间内续签租约。如果租约没有明确续签或者持有租约的客户去世,那么租约就会到期。发生这种情况时,HDFS 将关闭该文件并代表客户端释放租约,以便其他客户端可以写入该文件。这个过程称为租约恢复。

<小时/>

我在这里提供一个解决方法供您引用:在写入和读取之前添加 Redis 数据库!

无论何时进行读或写操作,首先请判断Redis数据库中是否存在特定的key。如果没有,则将一组键值写入Redis。然后进行业务逻辑处理。最后不要忘记删除该 key 。

虽然这可能有点麻烦或影响性能,但我认为它可以满足您的需求。 BTW,考虑到业务逻辑可能会失败或崩溃导致 key 永远不会被释放,您可以添加 TTL创建 key 时进行设置以避免这种情况。

关于azure - DataLake 锁定同一文件的读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58301154/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com