Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 流处理中的非确定性函数_Apache Spark_Apache Storm_Apache Flink_Apache Kafka Streams - Fatal编程技术网

Apache spark 流处理中的非确定性函数

Apache spark 流处理中的非确定性函数,apache-spark,apache-storm,apache-flink,apache-kafka-streams,Apache Spark,Apache Storm,Apache Flink,Apache Kafka Streams,某些系统(如StreamScope)要求函数具有确定性(以及它们的处理顺序),这是因为在流中每个消息都有其序列号。在发生故障的情况下,此序列号用于确定是否应重新计算事件(因为它是由流持久化的),以便下游节点不会计算相同的事件两次 Flink、Spark Streaming、Kafka Streams和Storm是否也要求函数具有确定性?是和否。这取决于;) 这些框架并不强迫您提供确定性函数 如果出现故障,将重新计算输入数据的某些部分。中间结果将被丢弃。因此,如果使用非确定性函数,新生成的中间结果

某些系统(如StreamScope)要求函数具有确定性(以及它们的处理顺序),这是因为在流中每个消息都有其序列号。在发生故障的情况下,此序列号用于确定是否应重新计算事件(因为它是由流持久化的),以便下游节点不会计算相同的事件两次

Flink、Spark Streaming、Kafka Streams和Storm是否也要求函数具有确定性?

是和否。这取决于;)

这些框架并不强迫您提供确定性函数

如果出现故障,将重新计算输入数据的某些部分。中间结果将被丢弃。因此,如果使用非确定性函数,新生成的中间结果可能与前一个结果(失败前)不同。然而,如果你不在乎这一点,使用非决定论是可以的

此外,它取决于您使用的语义

Flink/Storm(三叉戟)/Spark(一次加工):

  • 弗林克只为某些源和汇提供了一次Exacly
  • 为此,一些输出将被删除,并在出现故障时重新计算
    • 例如,Flink可以截断文件。因此,您可能希望确保不要使用稍后可能会反转的消费者输出(或者您可能不在乎…)
  • Spark/Storm微量配料自动防止下游消费者自动读取未提交的输出(我认为对于某些接收器,Flink也会这样做)
Flink/Storm/Kafka溪流(至少一次处理):

  • 如果在出现故障的情况下至少使用一次处理语义运行,您将在输出中获得一些重复的语义。因此,如果使用非确定性函数,这些“副本”实际上可能具有不同的值(由于非确定性)