Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 ApacheSpark流:在内存中积累数据,然后再输出_Apache Spark_Spark Streaming_Pyspark_Apache Flink - Fatal编程技术网

Apache spark ApacheSpark流:在内存中积累数据,然后再输出

Apache spark ApacheSpark流:在内存中积累数据,然后再输出,apache-spark,spark-streaming,pyspark,apache-flink,Apache Spark,Spark Streaming,Pyspark,Apache Flink,如果我没有弄错的话,spark streaming是用于将RDD批处理通过一组转换,并在转换后进行输出操作。这是为每个批次执行的,因此也为每个批次执行输出操作。但是,由于每次输出都要花费很多钱,我希望处理批次并累积结果,并且只在某些事件(例如,在某个时间段后)写出累积结果并结束程序 我知道我可以积累数据,例如使用updateStateByKey,但我不知道如何告诉Spark仅在很久以后,当某些条件出现时才使用输出操作(例如saveAsTextFiles) 这可能吗 这在flink中可能吗?免责声

如果我没有弄错的话,spark streaming是用于将RDD批处理通过一组转换,并在转换后进行输出操作。这是为每个批次执行的,因此也为每个批次执行输出操作。但是,由于每次输出都要花费很多钱,我希望处理批次并累积结果,并且只在某些事件(例如,在某个时间段后)写出累积结果并结束程序

我知道我可以积累数据,例如使用
updateStateByKey
,但我不知道如何告诉Spark仅在很久以后,当某些条件出现时才使用输出操作(例如
saveAsTextFiles

这可能吗


这在flink中可能吗?

免责声明:我是Apache flink的贡献者

由于丰富的窗口语义,使用Flink应该可以做到这一点:
Flink有一系列预定义的窗口。此外,您还可以实施自己的窗口策略,根据需要定制行为。

但这怎么可能呢?您是否遵循了链接?它解释了它在弗林克的工作原理。或者,请指定一个更详细的问题。我同意Matthias的观点,听起来你想做的是运行一段时间(一段时间,或一些元素),然后对结果采取行动。在流上运行计算“一段时间”正是窗口化。剩下的问题是:在那之后,您想对数据做什么?每次都将其写入一个新文件?将其附加到现有数据中?我不理解的是您所说的“减少传入数据”和“使用updateStateByKey将其记住”是什么意思您假设元组的数量太大,无法放入集群的分布式主存中您认为“减少的批处理”适合分布式主内存吗您假设进一步将“减少的批次”聚合到一个状态?如果这是您的假设,您可以使用两个连续的窗口。第一个“减少批处理”(>固定大小的元组窗口),第二个聚合stateByKey并在一段时间后发出状态。如果我使用windows,它们将变得非常大。我想我可以减少每一批,用updateStateByKey向state提交少得多的数据,然后在最后处理state的内容。但这似乎不起作用。(我在此假设RDD必须适合集群RAM。这是真的吗?或者RDD的最大大小是多少?)