spark streaming是不是一定要处理完上一批数据,才能处理下一批数据,对不对?
Does spark streaming must finish processing previous batch of data, and then it can process the next batch of data, is it right?
我设置的spark streaming时间间隔是5s。如果当前5s接收到非常非常多的数据,spark streaming在5s内无法完成,但是下一批数据即将到来。
spark streaming会同时处理下一批数据吗?
我的意思是批处理会并行执行吗?
Spark streaming 是一种时间贝斯流水线。先到先得。所以它不会一起处理相邻的批次,因为它以最好的方式处理每个批次,包括分配工作。更好的情况是,一旦完成当前批处理,它将处理待处理的批处理。这称为背压,可以使用某些接收器(例如 Kafka)工作。如果不是,它只会丢失这些数据。
Spark streaming 一次处理一批。此外,每个批次中的各个数据项按其在批次中的顺序进行处理。默认情况下,如果 spark 在下一批数据到来时没有足够的时间获取一批中的所有数据项,这些数据项将被删除。
但是,如果您使用更高级的流连接(例如 Kafka),Spark 可以在完成当前批处理后处理待处理的批处理。这会导致在 Kafka 中建立批次,这种建立称为 "back pressure",它也可以建立到 Kafka 必须开始丢弃数据的程度。
如果您没有使用 Kafka 等高级连接,并且您的数据流是 "bursty",这意味着存在高输入率的时期,您可能需要增加批处理时间以最大程度地减少数据丢失.
我设置的spark streaming时间间隔是5s。如果当前5s接收到非常非常多的数据,spark streaming在5s内无法完成,但是下一批数据即将到来。
spark streaming会同时处理下一批数据吗?
我的意思是批处理会并行执行吗?
Spark streaming 是一种时间贝斯流水线。先到先得。所以它不会一起处理相邻的批次,因为它以最好的方式处理每个批次,包括分配工作。更好的情况是,一旦完成当前批处理,它将处理待处理的批处理。这称为背压,可以使用某些接收器(例如 Kafka)工作。如果不是,它只会丢失这些数据。
Spark streaming 一次处理一批。此外,每个批次中的各个数据项按其在批次中的顺序进行处理。默认情况下,如果 spark 在下一批数据到来时没有足够的时间获取一批中的所有数据项,这些数据项将被删除。
但是,如果您使用更高级的流连接(例如 Kafka),Spark 可以在完成当前批处理后处理待处理的批处理。这会导致在 Kafka 中建立批次,这种建立称为 "back pressure",它也可以建立到 Kafka 必须开始丢弃数据的程度。
如果您没有使用 Kafka 等高级连接,并且您的数据流是 "bursty",这意味着存在高输入率的时期,您可能需要增加批处理时间以最大程度地减少数据丢失.