spark streaming fileStream
如何从一个时间间隔到另一个时间间隔识别监控目录中的新文件?
它是基于新文件名还是文件创建时间戳或任何其他方法?
newFilesOnly
论证有什么意义?
fileStream(String directory, Class<K> kClass, Class<V> vClass, Class<F> fClass, Function<org.apache.hadoop.fs.Path,Boolean> filter, boolean newFilesOnly, org.apache.hadoop.conf.Configuration conf)
答案 0 :(得分:4)
监控的快速答案是它使用文件修改时间(isNewFile
使用getFileModTime
)
关于newFilesOnly
....这不是那么直截了当,但你可以discern this info from the code。
TL; DR;是它只从流媒体开始的最后一分钟拉出旧文件(newFilesOnly = false
)。
这个参数的更复杂的答案是它将值initialModTimeIgnoreThreshold
设置为当前时间或0.然后使用此值设置modTimeIgnoreThreshold
,这是上述的最大值与搜索时间窗口中的最旧文件(currentTime - durationToRemember.milliseconds
)对比。这就是existing bug JUST fixed的位置。时间窗口曾经是硬编码的一分钟窗口,因此如果将此参数设置为false,则只能在最后1分钟内修改文件。尽管如此,我仍然对这个问题持怀疑态度......但无论如何,这个论点在3天前基本上已被打破。