Scala 火花流的容错性

Scala 火花流的容错性,scala,apache-spark,hadoop2,Scala,Apache Spark,Hadoop2,我想在这里解释一下容错性。假设我在hdfs中有1到10个文件,spark streaming已读取此文件。现在我的火花流不幸停止了。我有hdfs中的文件,比如1到20个,其中1到10个文件已经被spark streaming解析,11到20个是新添加的。现在我开始火花流,我可以看到文件1-30。由于我在hdfs中创建第21个文件时启动了spark,因此我的spark styreaming将丢失11-20个文件。如何获取丢失的文件。 我使用fileStream。在Spark streaming中f

我想在这里解释一下容错性。假设我在hdfs中有1到10个文件,spark streaming已读取此文件。现在我的火花流不幸停止了。我有hdfs中的文件,比如1到20个,其中1到10个文件已经被spark streaming解析,11到20个是新添加的。现在我开始火花流,我可以看到文件1-30。由于我在hdfs中创建第21个文件时启动了spark,因此我的spark styreaming将丢失11-20个文件。如何获取丢失的文件。
我使用fileStream。

在Spark streaming中fileStream的行为是监视文件夹并在那里拾取新文件。因此,它只会在进程启动后拾取新文件。为了处理11-20中的文件,您可能必须在进程启动后重命名它们

处理此场景的更好方法是使用Kafka之类的消息队列,您可以从任意点继续处理流:
Spark Streaming还提供了以下选项:。 如果启用,则流程将在每个批开始之前保存检查点(在指定的文件夹中)。然后,如果spark流处理由于某种原因崩溃,则可以从最后一个检查点开始

def createContext(folderName):
    sc = SparkContext(appName='SparkApplication')
    ssc = StreamingContext(sc, 2)  # 2 second window

    ## Your stream configuration here

    ssc.checkpoint(folderName)
    return ssc


ssc = StreamingContext.getOrCreate('/path/to/checkpoint/directory', 
                                   lambda: createContext('/path/to/dir') )
ssc.start()
ssc.awaitTermination()

我使用文件流。下面是代码snippet.val lines=ssc.fileStream[LongWritable,Text,TextInputFormat](“/home/File”)