大家好,
先说本人的理解,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 {*
if (!repeatIdChecker.isOK) out.collect(repeatIdChecker.result)*
repeatIdChecker = RepeatIdChecker(in)*
case _: BehaviorComVO => repeatIdChecker.doCheck(in)*
"visit" 是一个周期数据的开始。。但是运行之后,我发现,有其他uuid的数据,进入到同一个 RepeatIdChecker 中,*来自志愿者整理的flink邮件归档
Hi, 尝试理解fli一下你的疑问 “其中,每个具体mapFunc处理的数据,应该是相同的key数据。不知理解是否正确” -> keyby 只会保证相同 key 的数据会被分在相同 mapFunc 中,每个 mapFunc 可能会处理不同 key 的数据,详见官网文档: https://ci.apache.org/projects/flink/flink-docs-release-1.7/dev/stream/operators/*来自志愿者整理的flink
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。