开发者社区> 问答> 正文

请教关于Keyed() 方法的问题。

大家好,

先说本人的理解,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 中,*来自志愿者整理的flink邮件归档

展开
收起
毛毛虫雨 2021-12-07 14:11:25 901 0
1 条回答
写回答
取消 提交回答
  • Hi, 尝试理解fli一下你的疑问 “其中,每个具体mapFunc处理的数据,应该是相同的key数据。不知理解是否正确” -> keyby 只会保证相同 key 的数据会被分在相同 mapFunc 中,每个 mapFunc 可能会处理不同 key 的数据,详见官网文档: https://ci.apache.org/projects/flink/flink-docs-release-1.7/dev/stream/operators/*来自志愿者整理的flink

    2021-12-07 15:22:38
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载