Hi, 尝试理解fli一下你的疑问
“其中,每个具体mapFunc处理的数据,应该是相同的key数据。不知理解是否正确”
-> keyby 只会保证相同 key 的数据会被分在相同 mapFunc 中,每个 mapFunc 可能会处理不同 key 的数据,详见官网文档:
https://ci.apache.org/projects/flink/flink-docs-release-1.7/dev/stream/operators/

Yaoting Gong <fall.for.you....@gmail.com> 于2019年4月4日周四 下午2:00写道:

> 大家好,
>
> 先说本人的理解,keyed(..).flatmap(mapFunc())
> 其中,每个具体mapFunc处理的数据,应该是相同的key数据。不知理解是否正确。
>
> 我的具体情况是
>   我对数据对校验处理。首先根据设备id (uuid) 分组,然后针对不同分组进行数据校验。
> 部分代码如下:
>
>     rowData.filter(legalData _)
>    .map(data => BehaviorComVO(getText(data, "id"), getText(data, "uuid"),
> getText(data, "session_id"), getText(data, "source"), getText(data,
> "product_version")))
>    *  .keyBy(_.uuid)*
> *     .flatMap(new RepeatIdCheckDispatch())*
>      .addSink(....)
>
> *RepeatIdCheckDispatch*  细节:
>
> *  override def flatMap(in: BehaviorComVO, out: Collector[String]): Unit =
> {*
>
> *    in match {*
> *      case BehaviorComVO(_, _, _, "visit", _) =>*
> *        if (!repeatIdChecker.isOK) out.collect(repeatIdChecker.result)*
>
> *        repeatIdChecker = RepeatIdChecker(in)*
>
> *      case _: BehaviorComVO => repeatIdChecker.doCheck(in)*
> *    }*
> *  }*
>
> "visit" 是一个周期数据的开始。。但是运行之后,我发现,有其他uuid的数据,进入到同一个 *RepeatIdChecker 中*,
>

回复