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 Spark_Spark Structured Streaming - Fatal编程技术网

Apache spark Apache Spark结构化流媒体,用于窗口聚合和自定义触发

Apache spark Apache Spark结构化流媒体,用于窗口聚合和自定义触发,apache-spark,spark-structured-streaming,Apache Spark,Spark Structured Streaming,假设我有一些模式的流数据,如下所示: uid: string ts: timestamp 现在假设数据已被uid分区(在每个分区中,数据最小,例如小于1行/秒) 我想根据事件时间ts将数据(每个分区中)放入窗口,然后对每个窗口中的所有元素进行排序(也基于ts),最后对窗口中的每个元素按顺序应用自定义转换 问题1:有没有办法获得窗口的聚合视图,但保留每个元素,例如将窗口中的所有元素具体化为一个列表 Q2:如果Q1是可能的,我想设置一个水印和触发器组合,它在窗口结束时触发一次,然后定期触发或在每次

假设我有一些模式的流数据,如下所示:

uid: string
ts: timestamp
现在假设数据已被
uid
分区(在每个分区中,数据最小,例如小于1行/秒)

我想根据事件时间
ts
将数据(每个分区中)放入窗口,然后对每个窗口中的所有元素进行排序(也基于
ts
),最后对窗口中的每个元素按顺序应用自定义转换

问题1:有没有办法获得窗口的聚合视图,但保留每个元素,例如将窗口中的所有元素具体化为一个列表


Q2:如果Q1是可能的,我想设置一个水印和触发器组合,它在窗口结束时触发一次,然后定期触发或在每次延迟数据到达时触发。有可能吗?

在回答问题之前,让我指出Spark Structured Streaming提供了
KeyValueGroupedDataset.flatMapGroupsWithState
(在
Dataset.groupByKey
之后)用于任意状态流聚合(具有显式状态逻辑),为手动流状态管理提供了最大的帮助


问题1:有没有办法获得窗口的聚合视图,但保留每个元素,例如将窗口中的所有元素具体化为一个列表

这听起来像是一个流连接,其中输入流在左侧,聚合流(流聚合)在右侧。这应该是可行的(但没有示例代码,因为我仍然不确定是否正确理解了您的问题)

Q2:如果Q1是可能的,我想设置一个水印和触发器组合,它在窗口结束时触发一次,然后定期触发或在每次延迟数据到达时触发。可能吗


使用
window
标准函数定义窗口和水印,以便在适当的时间“关闭”窗口。这也是可行的(但再次没有例子,因为我不确定这个问题的优点)。

在回答问题之前,让我指出Spark Structured Streaming为任意状态流聚合提供了
KeyValueGroupedDataset.flatMapGroupsWithState
(在
Dataset.groupByKey
之后)(使用显式状态逻辑)为手动流状态管理提供最大的帮助


问题1:有没有办法获得窗口的聚合视图,但保留每个元素,例如将窗口中的所有元素具体化为一个列表

这听起来像是一个流连接,输入流在左边,聚合流(流聚合)在右边。这应该是可行的(但没有示例代码,因为我仍然不确定我是否正确理解了你的问题)

Q2:如果Q1是可能的,我想设置一个水印和触发器组合,在窗口结束时触发一次,然后定期触发或在每次延迟数据到达时触发。是否可能


使用
window
标准函数来定义窗口,并在适当的时间使用水印来“关闭”窗口。这也是可行的(但我不确定这个问题的优点,所以没有例子)。

谢谢,我已经研究了
flatMapGroupsWithState
,但它不适用于窗口函数(请参阅),我必须实现我自己的窗口逻辑,这似乎不正确。谢谢,我已经研究了
flatMapGroupsWithState
,但它不适用于窗口函数(请参阅),我必须实现我自己的窗口逻辑,这似乎不正确。