目录:apache beam 个人使用经验总结目录和入门指导(Java)
如果我们希望将相同的元素进行分组,则可以用Group的转化方法进行操作
首先我们生成1个单词数据集
接着要引入1个KV的类, 这个类在beam里很重要
KV.of(key, value) 即可生成1个键值对
我们把每个单词都变成 (单词,1)的键值对
PCollection<KV<String, Integer>> kvpCollection里的内容如下:
KV[cat,1]
KV[cat,1]
KV[cat,1]
KV[dog,1]
KV[dog,1]
KV[panda,1]
接着我们组装GroupByKey,即可进行分组
我们会得到1个KV<String,Iterable<Integer> >, 可以理解为如下:
KV[cat, [1,1,1]]
KV[dog, [1,1]]
KV[panda, [1]]
即所有键值为cat的kv都合到了一起,组成了1个迭代器,完成了分组,后续我们就可以对这3个KV里的迭代器做操作,计算单词数量, 也就完成了一次wordCount的例子。
注意事项: 分组的键值类型不可以是Double或者Float,因为这2个类型是不精确的类型,无法进行精确分组,使用时会报错
直接用官方SDK做wordCount
假设我们有了PCollection<KV<String, Integer>> kvpCollection, 可以不用GroupByKey,而是直接
这时候就能得到
KV[cat, 3]
KV[dog, 2]
KV[panda,1]
的这么1个分组+合并的结果