如何在结构化流中保持和重置状态?

问题描述 投票:0回答:1

我有一个要求,我需要显示从当天开始到当前时间的特定类别的汇总计数。

我正在使用Structure Streaming进行分组。由于窗口没有持久化数据帧的状态,我不确定如何实现逻辑,我可以在其中保持其状态并在先前状态下递增计数器。另外,我将如何在新的一天开始时重置状态。

输入记录:

{"Floor_Id" : "Shop Floor 1",
"HaltRecord" : {
    "HaltReason" : "Danahydraulic Error",
    "Severity" : "Low",
    "FaultErrorCategory" : "Docked",
    "NonFaultErrorCategory" : null
},
"Description" : "Forklift",
"Category" : {
    "Type" : "Halt",
    "End_time" : NumberLong(2018-02-13T12:00:01),
    "Start_time" : NumberLong(2018-02-13T12:00:00)
},
"Asset_Id" : 123,
"isError" : "y",
"Timestamp": 2018-02-13T12:00:01}

输出响应:

{
    "Floor_Id": "Shop Floor 1",
    "Error_Category": [
        {
            "Category": "Operator Error",
            "DataPoints": 
                {
                    "NumberOfErrors": 20,
                    "Date": 2018-02-13
                }
        },
        {
            "Category": "Danahydraulic Error",
            "DataPoints": {
                    "NumberOfErrors": 15,
                    "Date": 2018-02-13
                }
        }
    ]
}

任何帮助深表感谢。

apache-spark spark-streaming
1个回答
0
投票

我没有使用结构化流的状态函数,但我知道它是mapGroupWithState函数,它提供了持久化状态和计数逻辑的能力。

© www.soinside.com 2019 - 2024. All rights reserved.