apache beam入门之group分组操作

2023-11-07

目录:apache beam 个人使用经验总结目录和入门指导(Java)

如果我们希望将相同的元素进行分组,则可以用Group的转化方法进行操作
首先我们生成1个单词数据集

List<String> strLists = new ArrayList<>();
strLists.add("cat");
strLists.add("cat");
strLists.add("cat");
strLists.add("dog");
strLists.add("dog");
strLists.add("panda");
// 创建字符串输入
PCollection<String> words = pipeline.apply(Create.of(strLists));

接着要引入1个KV的类, 这个类在beam里很重要
KV.of(key, value) 即可生成1个键值对
我们把每个单词都变成 (单词,1)的键值对

// 全部转成KV形式
PCollection<KV<String, Integer>> kvpCollection
	= words.apply(MapElements.via(new SimpleFunction<String, KV<String, Integer>>() {
	@Override
	public KV<String, Integer> apply(String str) {
		return KV.of(str, 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,即可进行分组

PCollection<KV<String, Iterable<Integer>>> groupKv = kvpCollection.apply(GroupByKey.create());

我们会得到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,而是直接

PCollection<KV<String, Integer>> pWordCount
= kvpCollection.apply(Sum.integersPerKey());

这时候就能得到
KV[cat, 3]
KV[dog, 2]
KV[panda,1]
的这么1个分组+合并的结果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

apache beam入门之group分组操作 的相关文章

  • 前后端分离项目实现登录(登录)

    现在大部分的项目都是前后端分离项目 在前后端分离项目中的身份验证我们经常采用JWT认证 关于JWT认证的详细内容 请移步上一篇博客 最近做的项目恰好用到了JWT的身份验证 今天拿出来说一下 login vue
  • CentOS停止维护那就用Alibaba Cloud Linux替代吧

    Alibaba Cloud Linux是阿里云推出的Linux镜像系统 CentOS停止维护可以选择Alibaba Cloud Linux替代 Alibaba Cloud Linux全面兼容RHEL CentOS生态 CentOS RHEL

随机推荐

  • Echarts实现3d图表

  • “定点打击”——XPath 使用细则(Just For Selenium WebDriver)(md重制版)

    定点打击 XPath 使用细则 Just For Selenium WebDriver md重制版 该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 Selenium WebDriver中有关元素定位的学习 需要XP
  • ts类型声明文件的正确使用姿势

    ts类型声明文件的正确使用姿势 ts声明文件类型 DefinitelyTyped社区已定义 npm install types jquery save dev 与npm一同发布 解释 package json 中有 types 字段 或者有
  • 动态链表

    define CRT SECURE NO WARINGS include
  • 数据库相关

    目录 第一章 数据库概述 1 1 数据库的好处 1 2 数据库的常见概念 1 3 数据库的存储特点 1 4 数据库的常见分类 1 5 SQL语言的分类 第二章 MySQL概述 2 1 MySQL的背景 2 2 MySQL的优点 2 3 My
  • 闲谈IPv6-IPv6地址的scope到底是什么?

    一台主机启动后 每一块网卡都会自动生成一个fe80打头的 链路本地地址 这个地址在Linux上你删都删不掉 不信你试试 在Windows是可以删掉的 但是只要你重置网卡 它就会自动生成 这个所谓的链路本地地址到底有何怪异 我的主机安装两块网
  • 复购客户sql

    复购客户 用户分析是电商数据分析中重要的模块 在对用户特征深度理解和用户需求充分挖掘基础上 进行全生命周期的运营管理 拉新 gt 活跃 gt 留存 gt 价值提升 gt 忠诚 请尝试回答以下3个问题 现在数据库中有一张用户交易表order
  • 大模型部署避坑指南之: undefined symbol: cublasLtGetStatusString,version libcublasLt.so.11

    问题描述 OSError opt conda envs python35 paddle120 env lib python3 7 site packages nvidia cublas lib libcublas so 11 symbol
  • 当我遇到线上内存溢出问题是如何查看的

    首先我们自己写一个demo 来模拟内存溢出 新建User类 private int id private String name byte a new byte 1024 1000 public User public User int i
  • python oj刷题网站_程序员常用的刷题网站

    1 Lintcode Lintcode com LintCode网站是国内较大的在线编程 测评网站 此网站提供各大IT公司的算法面试题类型 行分门别类 由简单到中等 再到难 便于不同水平的程序员进行刷题练习 同时网站支持多种语言 Java
  • LeetCode905. 按奇偶排序数组

    给你一个整数数组 nums 将 nums 中的的所有偶数元素移动到数组的前面 后跟所有奇数元素 返回满足此条件的 任一数组 作为答案 示例 1 输入 nums 3 1 2 4 输出 2 4 3 1 解释 4 2 3 1 2 4 1 3 和
  • PostgreSQL之pgsql命令行常用命令

    文章目录 1 登录 1 1 psql报错 1 2 psql 错误 致命错误 用户 postgres Password 认证失败 2 常用操作 1 登录 1 1 psql报错 详情 分析 C Users Administrator gt pg
  • typecho反序列化漏洞复现

    typecho框架存在反序列化漏洞 利用此漏洞可执行任意代码 环境搭建 第一步 第二步 第三步 第三步 第四步 第五步 第六步 第七步 第八步 第九步 漏洞分析 typecho build install php 文件中 使用unseria
  • Eclipse 安装集成 FindBugs BUG分析插件

    一 下载eclipse软件 https www eclipse org downloads 下载Zip压缩包 解压缩即可 二 下载findbugs plugin压缩包 官网下载或者是从其他资源获取 http findbugs sourcef
  • 阿里推荐算法:BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transform

    这篇是阿里猜你喜欢的一篇transformer paper 含金量很高 注意 1 bert用在推荐系统中 将用户的历史序列看做是词序列 2 测试时 将序列的最后一个item进行masked Abstract 根据用户历史的行为信息 对用户动
  • [论文阅读] (16)Powershell恶意代码检测论文总结及抽象语法树(AST)提取

    娜璋带你读论文 系列主要是督促自己阅读优秀论文及听取学术讲座 并分享给大家 希望您喜欢 由于作者的英文水平和学术能力不高 需要不断提升 所以还请大家批评指正 非常欢迎大家给我留言评论 学术路上期待与您前行 加油 前一篇介绍分享英文论文审稿意
  • python1_4字符串

    字符串 string My name string My name string My name 字符串可以是单 双 三引号 三引号可以空行 res string 1 字符串的索引 res string 2 print res 如图所示1
  • rstudio 导出结果_R语言结果输出方法

    输出函数 cat sink writeLines write table 根据输出的方向分为输出到屏幕和输出到文件 1 cat函数即能输出到屏幕 也能输出到文件 使用方式 cat file sep fill FALSE labels NUL
  • SpringBoot--基础--09--条件注解

    SpringBoot 基础 09 条件注解 一 条件注解 1 1 代码和测试 SysService public interface SysService void show WindowService public class Windo
  • apache beam入门之group分组操作

    目录 apache beam 个人使用经验总结目录和入门指导 Java 如果我们希望将相同的元素进行分组 则可以用Group的转化方法进行操作 首先我们生成1个单词数据集 List