gpt4 book ai didi

apache-spark - flatMapGroupsWithState 中 OutputMode 的目的是什么?如何/在哪里使用它?

转载 作者:行者123 更新时间:2023-12-01 04:27:48 26 4
gpt4 key购买 nike

我在探索 KeyValueGroupedDataset.flatMapGroupsWithState用于 Spark Structured Streaming 中的任意状态聚合。
KeyValueGroupedDataset.flatMapGroupsWithState的签名运算符如下:

flatMapGroupsWithState[S: Encoder, U: Encoder](
outputMode: OutputMode,
timeoutConf: GroupStateTimeout)(
func: (K, Iterator[V], GroupState[S]) => Iterator[U]): Dataset[U]
OutputMode的目的是什么?争论?

在查看源代码(作为底层物理运算符的 FlatMapGroupsWithStateExec 的)时,我找不到 OutputMode 的任何位置。会被使用。

最佳答案

事实上,我也没有发现任何用途。我有几个理论:

  • 该模式在这里与 org.apache.spark.sql.catalyst.plans.logical.FlatMapGroupsWithState 的签名保持一致。逻辑运算符。如果您检查 org.apache.spark.sql.execution.SparkStrategies.BasicOperators apply 方法,您会注意到逻辑运算符经常将其所有参数传递给物理运算符。我不确定,但它看起来像一个设计指南,但这只是我的假设。
  • 这也可能是遗留原因。 FlatMapGroupsWithState演化自 MapGroupsWithState为了强制执行输出模式语义。它已在此 PR 中实现:https://github.com/apache/spark/pull/17197/files ( SPARK-19858 ) 与 MapGroupsWithState重命名为 FlatMapGroupsWithStateoutputMode作为参数添加。也许 - 如果我之前的理论是错误的 - 只是因为它通过了 PR 而没有人想提示它因为“它已经在这里”的原则?
  • 也许在 future outputMode会传递给映射函数吗?我发现用于保存流聚合的节点 ( StateStoreSaveExec ) 使用输出模式来找出要保留在状态存储中的条目。也许它会是 *withState 即将添加的新功能转换,如评论 btw 中所述:

    • @param outputMode the output mode of func
  • 关于apache-spark - flatMapGroupsWithState 中 OutputMode 的目的是什么?如何/在哪里使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56921772/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com