问题内容
我是一名 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
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Go 中的 Apache Beam ParDo 过滤器
后端开发2024-02-05
Go 中的 Apache Beam 左连接
后端开发2024-02-11
java过滤器中Filter的ChainFilter过滤链
后端开发2023-08-11
BigTable 中多列的过滤器
后端开发2024-04-04
vue中过滤器的用法
后端开发2024-04-02
JAVA中的拦截器、过滤器
后端开发2023-08-19
vue中的局部过滤器和全局过滤器代码实操
后端开发2024-04-02
Vue中的过滤器(filter)详解
后端开发2022-11-13
详解JavaWeb中的过滤器Filter
后端开发2024-04-02
Java中的SpringSecurity配置过滤器
后端开发2024-04-02
Redis 中布隆过滤器的实现
后端开发2024-04-02
JS中filter( )数组过滤器的使用
后端开发2024-04-02
VUE中的filters过滤器如何使用
后端开发2023-06-29
AngularJS中的过滤器filter怎么使用
后端开发2023-07-04
VUE中的filters过滤器使用方法
后端开发2024-04-02
Redis中Redisson布隆过滤器的学习
后端开发2024-04-02
JavaWeb中过滤器Filter的用法详解
后端开发2022-11-13
Redis中Bloomfilter布隆过滤器的学习
后端开发2022-12-14
Java中使用Filter过滤器的方法
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧