从ADLS gen1火花读取文件

问题描述 投票:0回答:1

我有一个将(覆盖现有文件)写入ADLS Gen1目录的过程,然后另一个过程启动Spark作业以读取最新的覆盖文件。

[似乎大多数时候火花不读取最新的更新文件。在为第二个进程读取文件建立了一些延迟(30s-60s)之后,它似乎正在工作。

在不引入任何延迟的情况下解决此问题的最佳方法是什么?

感谢反馈。

azure apache-spark azure-data-lake
1个回答
0
投票

基于我搜索的HDFS的documents,作家锁不会阻止其他客户端的读取。请参阅以下声明:

写作者必须先获得文件的排他锁,允许在这些文件中写入/追加/截断数据。尤其是此排他锁不会阻止其他客户端读取文件,(这样客户端可以同时写文件另一个可能正在读取相同的文件)。

因此,我的意见是,如果当前将某些内容写入文件需要一段时间,则读取一致性不可避免会有所延迟。


[如果您确实要确保强读取一致性(不希望客户端读取滞后数据),请尝试在此处提供一种变通方法供您参考:在读写之前添加Redis数据库!

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

尽管这可能有点麻烦或影响性能,但我认为它可以满足您的需求。顺便说一句,考虑到业务逻辑可能会失败或崩溃,以致永远不会释放密钥,可以在创建密钥时添加TTL设置,以避免这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.