Spark中使用相同状态的不同类型列的任意有状态操作

时间:2018-01-18 11:20:13

标签: scala apache-spark apache-spark-sql spark-structured-streaming

我有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)

我只知道如何维护两种数据类型的状态??? 因此,当我得到数值时,我只有数字统计数据,同样是字符串数据类型。

0 个答案:

没有答案