首页 > 解决方案 > 一旦处理开始,Spark 会从目录中获取新文件吗?

问题描述

如果我使用

sc.textFile("/my/dir1")

为目录中的所有文件创建RDD,并且已经有另一个应用程序在其中写入(因此,如果处理时间很长,将添加新文件),spark 是否也会获取新文件,或者只是在启动时找到的那些?(我真的需要后者……)

标签: apache-spark

解决方案


最简洁的答案是不。原因是 RDD 或 Dataframe 是不可变的数据结构。一旦创建了 RDD/Dataframe,就无法附加到该数据结构。

当您读取目录中的数据时,spark 将在 RDD 中创建,以跟踪读取数据中的分区。那么这个 RDD 是不可变的。所以 spark 将继续执行在启动时找到的分区

替代方法是使用火花流,在将新数据添加到目录时发现新数据。


推荐阅读