我有json,其中列名为键,行为值。 值可以是字符串或数值数据类型。 根据我的用例,我使用任意有状态操作来计算以下操作 对于Numeric数据类型:我有一个计算min,max和sum。 对于String数据类型:我计算有效或无效字符串。
要从JSON中提取值类型,我将解析值如下
val jValue = parse(value)
jValue match {
case JObject(l) ⇒
l foreach { case (colName, colData) =>
colData match {
case JDouble(value) => // numeric stats computation
case JString(value) => // string stats computation
}}}
为此,我使用任意有状态操作
dataFrame
.select(col("key").cast("string").as("key"), col("value").cast("string").as("value"))
.as[(String, String)]
.groupByKey { case (key, _) => key }
.mapGroupsWithState(mapFunc)
我只知道如何维护两种数据类型的状态??? 因此,当我得到数值时,我只有数字统计数据,同样是字符串数据类型。