Go 中的 Apache Beam ParDo 过滤器
短信预约 -IT技能 免费直播动态提醒
问题内容
我是一名 python 开发人员,但应该使用 go 制作数据流管道。 与 python 或 java 相比,我找不到那么多使用 go 的 apache beam 示例。
我有以下代码,其中具有用户名和年龄的结构。任务是增加年龄,然后根据年龄进行过滤。我找到了增加年龄的方法,但卡在过滤部分。
package main
import (
"context"
"flag"
"fmt"
"github.com/apache/beam/sdks/v2/go/pkg/beam"
"github.com/apache/beam/sdks/v2/go/pkg/beam/log"
"github.com/apache/beam/sdks/v2/go/pkg/beam/x/beamx"
)
func init() {
beam.registerfunction(incrementage)
}
type user struct {
name string
age int
}
func printrow(ctx context.context, list user) {
fmt.println(list)
}
func incrementage(list user) user {
list.age++
return list
}
func main() {
flag.parse()
beam.init()
ctx := context.background()
p := beam.newpipeline()
s := p.root()
var userlist = []user{
{"bob", 40},
{"adam", 50},
{"john", 35},
{"ben", 8},
}
initial := beam.createlist(s, userlist)
pc := beam.pardo(s, incrementage, initial)
pc1 := beam.pardo(s, func(row user, emit func(user)) {
emit(row)
}, pc)
beam.pardo0(s, printrow, pc1)
if err := beamx.run(ctx, p); err != nil {
log.exitf(ctx, "failed to execute job: %v", err)
}
}
我尝试创建一个如下所示的函数,但这返回一个布尔值而不是用户对象。我知道我错过了一些简单但无法弄清楚的事情。
func filterage(list user) user {
return list.age > 40
}
在 python 中,我可以编写如下所示的函数。
beam.Filter(lambda line: line["Age"] >= 40))
正确答案
您需要在函数中添加一个发射器来发射用户:
func filterAge(list user, emit func(user)) {
if list.Age > 40 {
emit(list)
}
}
正如您当前代码中所写, 返回 list.age > 40
list.age > 40
首先评估为 true(布尔值),并且返回该布尔值。
以上就是Go 中的 Apache Beam ParDo 过滤器的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
Go 中的 Apache Beam ParDo 过滤器
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
Go 中的 Apache Beam ParDo 过滤器
问题内容我是一名 python 开发人员,但应该使用 go 制作数据流管道。与 python 或 java 相比,我找不到那么多使用 go 的 apache beam 示例。我有以下代码,其中具有用户名和年龄的结构。任务是增加年龄,然
2024-02-05
Go 中的 Apache Beam 左连接
php小编小新在这里给大家介绍一下Go语言中的Apache Beam左连接。Apache Beam是一种分布式数据处理框架,它提供了一种通用的编程模型,用于在不同的分布式数据处理引擎上执行批处理和流处理任务。而左连接是一种常见的数据处理操作
2024-02-11
Apache Beam 从 Go 中的 PCollection 中选择前 N 行
Apache Beam 是一个开源的分布式数据处理框架,它提供了一种统一的编程模型,可以在不同的批处理和流处理引擎上运行。最近,Apache Beam 的 Go SDK 中新增了一个非常有用的功能——从 PCollection 中选择前 N
2024-02-10
java过滤器中Filter的ChainFilter过滤链
在Java过滤器中,FilterChain是一种过滤链,用于按照一定顺序依次调用多个过滤器对请求进行处理。FilterChain接口定义了一个doFilter方法,该方法接受ServletRequest和ServletResponse作为参
2023-08-11
BigTable 中多列的过滤器
小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《BigTable 中多列的过滤器》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!问题内容摘自 c
2024-04-04
2024-04-02
JAVA中的拦截器、过滤器
JAVA变成拦截器、过滤器 一、拦截器1、简介说明2、源码及方法说明3、拦截器自定义应用 二、过滤器1、简介说明2、源码及方法说明3、过滤器的自定义应用 三、Springboot中的WebMvcConfigurer1、简介2
2023-08-19
2024-04-02
Vue中的过滤器(filter)详解
vuefilter过滤器处理数据的作用,使用位置:mustache插值和v-bind表达式,过滤器用于文本转换,复杂的数据处理则用computed,这篇文章主要介绍了Vue中的过滤器(filter),需要的朋友可以参考下
2022-11-13
2024-04-02
2024-04-02
2024-04-02
2024-04-02
VUE中的filters过滤器如何使用
这篇文章主要讲解了“VUE中的filters过滤器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VUE中的filters过滤器如何使用”吧!前言Vue.js 允许我们自定义过滤器,可
2023-06-29
AngularJS中的过滤器filter怎么使用
这篇文章主要介绍“AngularJS中的过滤器filter怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“AngularJS中的过滤器filter怎么使用”文章能帮助大家解决问题。在Angul
2023-07-04
2024-04-02
2024-04-02
JavaWeb中过滤器Filter的用法详解
过滤器通常对一些web资源进行拦截,做完一些处理器再交给下一个过滤器处理,直到所有的过滤器处理器,再调用servlet实例的service方法进行处理。本文将通过示例为大家讲解JavaWeb中过滤器Filter的用法与实现,需要的可以参考一下
2022-11-13
Redis中Bloomfilter布隆过滤器的学习
布隆过滤器是一个非常长的二进制向量和一系列随机哈希函数的组合,可用于检索一个元素是否存在,本文就详细的介绍一下Bloomfilter布隆过滤器,具有一定的参考价值,感兴趣的可以了解一下
2022-12-14
2024-04-02