Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure Spark从ADLS gen1读取文件_Azure_Apache Spark_Azure Data Lake - Fatal编程技术网

Azure Spark从ADLS gen1读取文件

Azure Spark从ADLS gen1读取文件,azure,apache-spark,azure-data-lake,Azure,Apache Spark,Azure Data Lake,我有一个将(覆盖现有文件)写入ADLS Gen1目录的进程,然后是另一个启动spark作业以读取最新覆盖文件的进程 看起来spark大部分时间都没有读取最新更新的文件。在为第二个进程读取文件建立了一些延迟(30秒-60秒)之后,它似乎正在工作 在不造成任何延误的情况下,解决这一问题的最佳办法是什么 感谢您的反馈。根据我搜索的HDFS,writer锁不会阻止其他客户端读取。请参阅以下语句: 写入程序必须先获得文件的独占锁,然后才能 允许在这些文件中写入/追加/截断数据。尤其是 此独占锁不会阻止其他

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

看起来spark大部分时间都没有读取最新更新的文件。在为第二个进程读取文件建立了一些延迟(30秒-60秒)之后,它似乎正在工作

在不造成任何延误的情况下,解决这一问题的最佳办法是什么

感谢您的反馈。

根据我搜索的HDFS,writer锁不会阻止其他客户端读取。请参阅以下语句:

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

所以,我的观点是,如果当前文件中写入的内容需要一段时间,那么读取一致性的延迟是不可避免的


如果您确实希望确保强读取一致性(不希望客户端读取滞后数据),我尝试在这里提供一个解决方案供您参考:在写入和读取之前添加Redis数据库

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


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

看起来文件在spark会话中被缓存。修改为通过查看文件来刷新会话更新的时间戳和工作时间。