首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Apache beam/Google数据流通过下游聚合丰富了上游记录

Apache beam/Google数据流通过下游聚合丰富了上游记录
EN

Stack Overflow用户
提问于 2019-07-18 14:00:22
回答 1查看 173关注 0票数 1

我已经创建了一个Java apache光束流管道,我计划在google dataflow上运行它。它接收与以下内容类似的元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ipAddress, serviceUsed, errorOrSuccess, time, parameter, etc.

例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'237.98.58.248', 'service1', 'error', '12345', 'randomParameter', etc

我目前根据事件时间将这些数据放入固定的窗口中。我想使用我的管道来计算每个窗口接收的每个ip地址的错误数和成功数,然后丰富原始数据。

我希望调整每个原始元素,以输出类似于以下内容的最终元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
totalErrorsInThisWindow, totalSuccessInThisWindow, ipAddress, serviceUsed, errorOrSuccess, time, parameter, etc.

例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'237.98.58.248', 'service1', 'error', '12345', 'randomParameter', etc
'149.142.114.250', 'service2', 'success', '12346', 'randomParameter', etc
'237.98.58.248', 'service3', 'error', '12344', 'randomParameter', etc
...

变成类似这样的东西

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'100', '1000', '237.98.58.248', 'service1', 'error', '12345', 'randomParameter', etc
'11', '34', '149.142.114.250', 'service2', 'success', '12346', 'randomParameter', etc
'100', '1000', '237.98.58.248', 'service3', 'error', '12344', 'randomParameter', etc
...

对如何做到这一点有什么建议吗?

我知道几种方法来计算每个客户端、每个窗口的totalErrorsInThisWindowtotalSuccessInThisWindow -一种方法是删除除ipAddresserrorOrSuccess之外的所有列,然后执行apply(Count.<String>perElement());。然而,我正在努力丰富原始数据。第一个想法是使用侧输入,但我认为使用不断变化的侧输入不会很好地工作。

另一种选择是为成功和失败维护一个基于键的状态变量,我可以在处理每个元素时递增状态变量,并使用它来丰富相同DoFn中的数据。但是,我遇到的问题是,只有在窗口中为每个键处理的最后一个元素才会有正确的成功和失败值。

下面是一个我可以用state做什么与我想要用state做什么的例子:

输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'a'
'b'
'a'
'a'

我可以使用state获得的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'a':1
'b':1
'a':2
'a':3

我希望使用state获得的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'a':3
'b':1
'a':3
'a':3

我希望我的问题是明确的,我希望我目前的方法和挑战也是明确的。任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-07-24 00:33:50

请看一下GroupByKey和组合器,以及how to use it with windowing

我认为像这样的东西会工作得很好。您可以按IP分组,应用窗口并统计错误和成功次数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PCollection<MyRecord> records = <Read from your source>

PCollection<KV<string, MyRecord>> withIP = records.apply(ParDo.of(
    new DoFn<MyRecord, KV<KV<string, MyRecord>>>() {
      // Implement processElement and call outputWithTimestamp
    }
));


PCollection<MyRecord> windowed = withIP.apply(
    Window.<MyRecord>into(FixedWindows.of(Duration.standardSeconds(60))));

PCollection<KV<String, Iterable<MyRecords>>> grouped = 
    windowed.apply(GroupByKey.<String, MyRecords>create());


PCollection<KV<String, MyErrorStats>> errorsPerIP =
  playerAccuracy.apply(Combine.<String, MyRecord, MyErrorStats>perKey(
    new MyErrorStatsCombiner())));


public static class MyErrorStatsCombiner implements     
SerializableFunction<Iterable<MyRecords>, MyErrorStats> {
  @Override
  public Integer apply(Iterable<MyRecords> record) {
    MyErrorStats stats = new MyErrorStats();
    for (int item : record) {
      stats.errorsInThisWindow += item.errorsInThisWindow;
      stats.successInThisWindow += item.successInThisWindow;
    }
    return stats;
  }
}

至于在记录中保留其他元数据字段,您可以决定如何在MyErrorStatsCombiner中聚合/保留这些字段。

我不清楚你是真的想按IP分组,还是按多个不同的元数据域分组。如果您想要按多个元数据字段进行分组并获取所有这些字段的计数,那么。这可能是一个有用的参考。GroupBy using multiple data properties。你可以先按IP分组,不管是成功还是失败。但是,我认为您不能在同一记录中获得所需的总错误和成功次数的输出。例如,您可以使用bigquery查询轻松完成最后一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57096322

复制
相关文章
通过 Java 来学习 Apache Beam
作者 | Fabio Hiroki 译者 | 明知山 策划 | 丁晓昀 ‍在本文中,我们将介绍 Apache Beam,这是一个强大的批处理和流式处理开源项目,eBay 等大公司用它来集成流式处理管道,Mozilla 用它来在系统之间安全地移动数据。‍ 概    览 Apache Beam 是一种处理数据的编程模型,支持批处理和流式处理。 你可以使用它提供的 Java、Python 和 Go SDK 开发管道,然后选择运行管道的后端。 Apache Beam 的优势 Beam 的编程模型 内
深度学习与Python
2023/03/29
1.2K0
通过 Java 来学习 Apache Beam
Apache Beam研究
Apache Beam是Google开源的,旨在统一批处理和流处理的编程范式,核心思想是将批处理和流处理都抽象成Pipeline、Pcollection、PTransform三个概念。Apache Beam本身是不具备计算功能的,数据的交换和计算都是由底层的工作流引擎(Apache Apex, Apache Flink, Apache Spark, and Google Cloud Dataflow)完成,由各个计算引擎提供Runner供Apache Beam调用,而Apache Beam提供了Java、Python、Go语言三个SDK供开发者使用。
哒呵呵
2018/09/18
1.5K0
Apache Beam研究
Apache Beam 初探
Beam可以解决什么问题?当MapReduce作业从Hadoop迁移到Spark或Flink,就需要大量的重构。Dataflow试图成为代码和执行运行时环境之间的一个抽象层。代码用Dataflow SDK实施后,会在多个后端上运行,比如Flink和Spark。Beam支持Java和Python,与其他语言绑定的机制在开发中。它旨在将多种语言、框架和SDK整合到一个统一的编程模型。
Fred Liang
2020/01/02
2.3K0
Apache Beam 初探
Apache Beam的Docker Demo
Apache Beam 是统一的批/流数据处理的编程模型。本文主要是参考官方文档,用 Docker 来快速跑起来一个用 Beam 来构建的 Flink 程序来处理数据的 Demo。
runzhliu
2020/08/06
9380
大数据凉了?No,流式计算浪潮才刚刚开始!
AI 前线导读:本文重点讨论了大数据系统发展的历史轨迹,行文轻松活泼,内容通俗易懂,是一篇茶余饭后用来作为大数据谈资的不严肃说明文。本文翻译自《Streaming System》最后一章《The Evolution of Large-Scale Data Processing》,在探讨流式系统方面本书是市面上难得一见的深度书籍,非常值得学习。 更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)
Fayson
2018/10/23
1.4K0
大数据凉了?No,流式计算浪潮才刚刚开始!
BigData | Apache Beam的诞生与发展
Paper1: https://research.google.com/pubs/archive/35650.pdf
Sam Gor
2019/07/08
1.4K0
Flink 使用Flink进行高吞吐,低延迟和Exactly-Once语义流处理
在本文中,我们将深入探讨Flink新颖的检查点机制是如何工作的,以及它是如何取代旧架构以实现流容错和恢复。我们在各种类型的流处理应用程序上对Flink性能进行测试,并通过在Apache Storm(一种广泛使用的低延迟流处理器)上运行相同的实验来进行对比。
smartsi
2019/08/07
5.9K0
Flink 使用Flink进行高吞吐,低延迟和Exactly-Once语义流处理
Apache Beam 架构原理及应用实践
导读:大家好,很荣幸跟大家分享 Apache Beam 架构原理及应用实践。讲这门课之前大家可以想想,从进入 IT 行业以来,不停的搬运数据,不管职务为前端,还是后台服务器端开发。随着这两年科技的发展,各种数据库,数据源,应运而生,大数据组件,框架也是千变万化,从 Hadoop 到现在的 Spark、Flink,数据库从先前的 oracle、MySQL 到现在的 NOSQL,不断延伸。那么有没有统一的框架,统一的数据源搬砖工具呢?
Spark学习技巧
2019/10/15
3.5K0
Apache Beam:下一代的数据处理标准
Apache Beam(原名Google DataFlow)是Google在2016年2月份贡献给Apache基金会的孵化项目,被认为是继MapReduce、GFS和BigQuery等之后,Google在大数据处理领域对开源社区的又一贡献。Apache Beam的主要目标是统一批处理和流处理的编程范式,为无限、乱序,Web-Scale的数据集处理提供简单灵活、功能丰富以及表达能力十分强大的SDK。Apache Beam项目重点在于数据处理的编程范式和接口定义,并不涉及具体执行引擎的实现。本文主要介绍Apac
CSDN技术头条
2018/02/12
1.6K0
Apache Beam:下一代的数据处理标准
Apache Beam WordCount编程实战及源码解读
本文介绍了如何使用 Apache Beam 实现 WordCount 程序,通过一个简单的 Maven 项目结构,展示了如何通过 Apache Beam 及其相关依赖和配置,使用 Spark、Flink 和 Apex 等大数据框架来运行并执行 WordCount 程序。
王小雷
2018/01/02
2.1K0
Apache Beam WordCount编程实战及源码解读
2021年大数据Flink(十二):流批一体API Transformation
Apache Flink 1.12 Documentation: Operators
Lansonli
2021/10/11
5950
打通上游、中游和下游:万亿美食市场决胜之道
文|孟永辉 很多创业者都将价值超过万亿级的美食市场当做自己一展拳脚的首要选择。于是,饿了么、美团、点我吧、口碑外卖……这些美食O2O不断涌现,不断蚕食着美食市场这块硕大的蛋糕。随着资本寒冬的到来,很多美食O2O的发展开始遭遇前所未有的挑战,年终能够交上一份满意的答卷成为每一个美食O2O的创业者必须慎重考量的问题。 根据速途研究院最新发布的一项数据显示,2015年美食行业市场规模有望突破2.8万亿元。而随着懒人经济的进一步发酵,美食市场的市场规模还有进一步扩大的态势,由此预计到2016年,我国的美食行业市场
孟永辉
2018/05/11
7562
Apache Beam实战指南 | 玩转KafkaIO与Flink
AI前线导读:本文是 **Apache Beam实战指南系列文章** 的第二篇内容,将重点介绍 Apache Beam与Flink的关系,对Beam框架中的KafkaIO和Flink源码进行剖析,并结合应用示例和代码解读带你进一步了解如何结合Beam玩转Kafka和Flink。系列文章第一篇回顾Apache Beam实战指南之基础入门
星哥玩云
2022/07/14
3.7K0
Apache Beam实战指南 | 玩转KafkaIO与Flink
全网第一 | Flink学习面试灵魂40问答案!
Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务:
大数据真好玩
2019/09/17
10.5K0
全网第一 | Flink学习面试灵魂40问答案!
Flink面试通关手册「160题升级版」
主要是当Flink开启Checkpoint的时候,会往Source端插入一条barrir,然后这个barrir随着数据流向一直流动,当流入到一个算子的时候,这个算子就开始制作checkpoint,制作的是从barrir来到之前的时候当前算子的状态,将状态写入状态后端当中。然后将barrir往下流动,当流动到keyby 或者shuffle算子的时候,例如当一个算子的数据,依赖于多个流的时候,这个时候会有barrir对齐,也就是当所有的barrir都来到这个算子的时候进行制作checkpoint,依次进行流动,当流动到sink算子的时候,并且sink算子也制作完成checkpoint会向jobmanager 报告 checkpoint n 制作完成。
大数据真好玩
2021/07/07
2.8K0
《F1 Query:大规模数据的声明式查询》读后感
最近 Google 发表了一篇《F1 Query: Declarative Querying at Scale》的论文来详细阐述了一个叫做 F1 Query 的大数据处理系统的设计。F1 Query 是Google内部进行异构查询的引擎,它支持对各种不同的文件格式、各种不同的存储系统( Bigtable, Spanner, Google Spreadsheets ) 的数据进行联合查询。听起来跟 Presto 很像对吧,这确实也是我看到这篇论文介绍的第一反应,但是随着你看得更深入一点你就会发现这篇论文的着重点完全不在于对多数据源的支持,它甚至完全没有描述是怎么做到支持多种不同异构数据源的。F1 Query 更引以为傲的是:
麒思妙想
2020/07/10
9010
数据流动方式迭代:Netflix Studio 的 Data Mesh 实践
作者 | Netflix 技术博客 译者 | 刘雅梦 策划 | 蔡芳芳 借助最新的数据网格平台(Data Mesh Platform),Netflix Studio 中的数据移动进入到了一个新阶段。这种配置驱动的平台在创建新管道时显著地缩短了前置时间,同时提供了新的支持特性,比如端到端的模式演进(schema evolution)、自助式 UI 和安全数据访问等。 1背景 未来几年,Netflix 上的大部分内容都将来自其自己的工作室(Netflix Studio)。Netflix 电影或电视据从开始宣传
深度学习与Python
2023/04/01
1.1K0
数据流动方式迭代:Netflix Studio 的 Data Mesh 实践
腾讯云 Serverless 衔接 Kafka 上下游数据流转实战
腾讯云 CKafka 作为大数据架构中的关键组件,起到了数据聚合,流量削峰,消息管道的作用。在 CKafka 上下游中的数据流转中有各种优秀的开源解决方案。如 Logstash,File Beats,Spark,Flink 等等。本文将带来一种新的解决方案:Serverless Function。其在学习成本,维护成本,扩缩容能力等方面相对已有开源方案将有优异的表现。 Tencent Cloud Kafka 介绍 Tencent Cloud Kafka 是基于开源 Kafka 引擎研发的适合大规模公有云部
腾讯云serverless团队
2020/08/06
8520
Flink面试通关手册
2019 年是大数据实时计算领域最不平凡的一年,2019 年 1 月阿里巴巴 Blink (内部的 Flink 分支版本)开源,大数据领域一夜间从 Spark 独步天下走向了两强争霸的时代。Flink 因为其天然的流式计算特性以及强大的处理性能成为炙手可热的大数据处理框架。
大数据真好玩
2019/12/09
1.3K0
Flink面试通关手册
Flink面试通关手册
2019 年是大数据实时计算领域最不平凡的一年,2019 年 1 月阿里巴巴 Blink (内部的 Flink 分支版本)开源,大数据领域一夜间从 Spark 独步天下走向了两强争霸的时代。Flink 因为其天然的流式计算特性以及强大的处理性能成为炙手可热的大数据处理框架。
王知无-import_bigdata
2019/12/09
1.4K0
Flink面试通关手册

相似问题

apache beam Kafkaio (数据流)的主题聚合

21

Apache Beam/Google数据流Python流自动标度

11

聚合下游作业中多个上游SCM的变化

12

谷歌云数据流上的Apache beam

10

具有数据流运行器的Apache beam中的聚合器

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文