If a streaming job processes the data from a filesystem, which is fault tolerant, such as HDFS, GlusterFS, MapR-FS, and so on, then Spark Streaming will always give a guarantee of processing the data exactly once since it is always able to recover the data from filesystem.