Apache spark 如何在ApacheSpark作业中获得某种状态?

Apache spark 如何在ApacheSpark作业中获得某种状态?,apache-spark,scheduler,Apache Spark,Scheduler,我想定期安排spark作业,该作业应处理新的输入文件(如果可用),并创建一些输出文件。如何最好地管理已成功和完全处理的文件的状态,以便后续spark作业运行不会再次拾取该文件 这是呼叫方(即调度员)的责任吗。 处理后是否应移动或重命名输入文件? 解决这些问题的推荐方法是什么?在我看来,有以下几种方法可以解决这个问题- 正如您所描述的那样,单独使用spark—在这里,您有两种选择。一种是调度程序或事件,它会在某个频率后触发,获取所有文件名并处理集群上的文件。要维护状态,您可以决定一些命名约定,例如

我想定期安排spark作业,该作业应处理新的输入文件(如果可用),并创建一些输出文件。如何最好地管理已成功和完全处理的文件的状态,以便后续spark作业运行不会再次拾取该文件

这是呼叫方(即调度员)的责任吗。 处理后是否应移动或重命名输入文件?
解决这些问题的推荐方法是什么?

在我看来,有以下几种方法可以解决这个问题-

  • 正如您所描述的那样,单独使用spark—在这里,您有两种选择。一种是调度程序或事件,它会在某个频率后触发,获取所有文件名并处理集群上的文件。要维护状态,您可以决定一些命名约定,例如,已处理文件的.completed、.tmp(Apache Flume)使用这种方法处理中的文件),或者您可以将已处理文件一起移动到新目录。 另一个是一个文件观察程序,它将轮询目录以进行修改,并在修改或添加文件后拉取该文件。然后可以将该文件提交到spark群集进行处理。如果您没有任何批处理要求,则首选文件查看器
  • 现在,另一种方法是完全不同的。我不完全知道你的要求和目的,但是如果你想让SCALL只处理文件,让一些其他技术如水槽来处理文件或者Flume这样的数据,你可以考虑这个方法。您可以将Flume代理配置为源代码为假脱机目录,在其中保存文件并作为Spark接收(支持推送和拉送两种模型)。通过使用这种方法,您可以利用Flume的容错、文件管理和恢复能力。Flume为输出文件管理和输出格式管理提供了简单的机制
    谢谢你的回答!