返回顶部
首页 > 资讯 > 后端开发 > GO >Apache Beam Go SDK:如何将 PCollection 转换为 PCollection?
  • 346
分享到

Apache Beam Go SDK:如何将 PCollection 转换为 PCollection?

2024-04-04 23:04:32 346人浏览 泡泡鱼
摘要

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Apache Beam Go SDK:如何将 PCollection 转换为 PCollection?》,这篇

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Apache Beam Go SDK:如何将 PCollection 转换为 PCollection>?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我正在使用 apache beam go sdk,但很难获取正确格式的 pcollection 以按键进行分组/组合。

在 pcollection 字符串中,每个键有多个记录,如下所示:

bob, cat
bob, dog
carla, cat
carla, bunny
doug, horse

我想使用groupbykeycombineperkey,这样我就可以像这样聚合每个人的宠物:

bob, [cat, dog]
carla, [cat, bunny]
doug, [horse]

如何将 pcollection<string> 转换为 pcollection<kv<string、string>>?

他们在这里提到了类似的内容,但不包括聚合字符串值的代码。

我可以使用 pardo 获取字符串键和字符串值,如下所示,但我不知道如何转换为 groupperkey 输入所需的 kv<string、string> 或 cogbk<string、string> 格式。

pcolout := beam.pardo(s, func(line string) (string, string) {
  cleanstring := strings.trimspace(line)
  openinGChar := ","
  istart := strings.index(cleanstring, openingchar)
  key := cleanstring[0:istart]
  value := cleanstring[istart+1:]
        
// how to convert to pcollection<kv<string, string>> before returning?
  return key, value
}, pcolin)

groupedkv := beam.groupbykey(s, pcolout)

它失败并出现以下错误。有什么建议吗?

panic:  inserting ParDo in scope root
        creating new DoFn in scope root
        binding fn main.main.func2
        binding params [{Value string} {Value string}] to input CoGBK<string,string>
values of CoGBK<string,string> cannot bind to {Value string}


正确答案


要映射到 kv,您可以应用 mapelements 并使用 into() 设置 kv 类型,并在 via() 逻辑中创建一个新的 kv.of(mykey, myvalue),例如,获取 kv<string, string>,使用类似这样的内容:

pcollection<kv<string, string>> kvpairs = linkpages.apply(mapelements.into(
        typedescriptors.kvs(
            typedescriptors.strings(),
            typedescriptors.strings()))
        .via(
            linkpage -> kv.of(datafile, linkpage)));

也许你弄错了下一个 pardo iter 类型

测试此代码

pcolIn := beam.CreateList(s, []string{"Bob, cat",
    "Bob, dog",
    "Carla, cat",
    "Carla, bunny",
    "Doug, horse",
})

pcolOut := beam.ParDo(s, func(line string) (string, string) {
    cleanString := strings.TrimSpace(line)
    openingChar := ","
    iStart := strings.Index(cleanString, openingChar)
    key := cleanString[0:iStart]
    value := cleanString[iStart+1:]

    // How to convert to PCollection<KV<string, string>> before returning?
    return key, value
}, pcolIn)

groupedKV := beam.GroupByKey(s, pcolOut)

beam.ParDo0(s, func(key string, iter func(*string) bool) {
    vals := []string{}
    val := ""
    for iter(&val) {
        vals = append(vals, strings.TrimSpace(val))
    }
    fmt.Println(key, vals)
}, groupedKV)

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持编程网!更多关于golang的相关知识,也可关注编程网公众号。

您可能感兴趣的文档:

--结束END--

本文标题: Apache Beam Go SDK:如何将 PCollection 转换为 PCollection?

本文链接: https://lsjlt.com/news/596362.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Apache Beam Go SDK:如何将 PCollection 转换为 PCollection?
    偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Apache Beam Go SDK:如何将 PCollection 转换为 PCollection?》,这篇...
    99+
    2024-04-04
  • 如何在Go中将[]byte转换为io.Reader
    目录[]byte 转 io.Readerio.Reader 转 []byte源码解析Reader 接口Writer 接口转换原理总结在 stackoverflow 上看到一个问...
    99+
    2022-06-07
    io reader byte GO
  • 如何将 TypeScript 接口转换为 Go 结构体?
    php小编新一为您介绍如何将 TypeScript 接口转换为 Go 结构体。当我们在前端使用 TypeScript 开发时,经常会定义接口来描述数据结构。而在后端使用 Go 语言开发...
    99+
    2024-02-09
  • 如何在 Go 中将整数转换为字节
    Golang不知道大家是否熟悉?今天我将给大家介绍《如何在 Go 中将整数转换为字节》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出...
    99+
    2024-04-05
  • 如何将 s3EventRecord 从 AWS SNS 转换为地图 (Go)
    哈喽!今天心血来潮给大家带来了《如何将 s3EventRecord 从 AWS SNS 转换为地图 (Go)》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,...
    99+
    2024-04-04
  • 如何将NSInteger转换为NSTimeInterval
    要将NSInteger转换为NSTimeInterval,可以使用NSTimeInterval的构造函数将NSInteger转换为N...
    99+
    2023-09-26
    转换
  • 如何将RTF转换为HTML
    RTF是一种用于文本编辑和文件交换的文件格式。HTML是一种用于创建网页的标记语言。虽然这两种文件格式都用于处理文本,但它们的设计目的和结构不同。因此,将RTF转换为HTML可能会涉及一些转换难题,但这是可能的,而且有多种方法可以实现它。传...
    99+
    2023-05-14
  • 如何将“\\u0301”转换为“\u0301”
    php小编草莓为您介绍如何将字符串中的“\\u0301”转换为“\u0301”。在PHP中,可以使用str_replace函数来实现这个转换。具体操作是将字符串中的“\\u0301”替...
    99+
    2024-02-08
  • C#如何将Excel转换为PDF
    目录总结转换场景将Excel转换为PDF是一个很常用的功能,常见的转换场景有以下三种:转换整个Excel文档到PDF转换Excel文档的某一个工作表到PDF转换Excel文档的某一个...
    99+
    2023-01-28
    C# Excel C# Excel转换为PDF C# PDF
  • php如何将0010转换为10
    这篇文章主要介绍了php如何将0010转换为10的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何将0010转换为10文章都会有所收获,下面我们一起来看看吧。转换方法:1、使用substr()截...
    99+
    2023-06-30
  • python如何将array转换为list
    要将一个numpy数组(array)转换为Python列表(list),可以使用tolist()函数。下面是一个示例代码:```py...
    99+
    2023-08-11
    python
  • 在 Go 中将时间编组为 JSON 之前如何将时间转换为 UTC?
    在Go语言中,将时间转换为UTC之前,我们可以使用time包中提供的函数和方法来进行处理。首先,我们可以使用time.Now()函数获取当前的本地时间。然后,使用time.LoadLo...
    99+
    2024-02-09
    go语言
  • jquery如何将json转换为数组
    使用jquery将json转换为数组的方法:1.新建html项目,引入jquery;2.使用var关键字定义json字符串,并赋值;3.使用parseJSON()方法将json字符串转换为json对象;4.通过for循环遍历json对象,将...
    99+
    2024-04-02
  • 如何将CentOS 8转换为CentOS Stream
    今天就跟大家聊聊有关如何将CentOS 8转换为CentOS Stream,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。CentOS  Stream是一个持续交付的Linu...
    99+
    2023-06-15
  • 如何将Avi文件转换为mpg
    要将AVI文件转换为MPG格式,您可以使用专业的视频转换软件,如HandBrake,FFmpeg或Any Video Convert...
    99+
    2023-09-26
    转换
  • JavaScript如何将set转换为数组
    这篇文章主要介绍JavaScript如何将set转换为数组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!将 set 转换为数组const set = new Set([1,&n...
    99+
    2023-06-27
  • Java中如何将double转换为int?
    Java中如何将double转换为int? 在Java编程中,我们经常需要将一个浮点数(double类型)转换为整数(int类型)。这可以通过使用强制类型转换或Math类中的方法来实现。下面将介绍两种...
    99+
    2023-10-20
    java 开发语言 Java
  • Jaxb2中如何将avaBean转换为xml
    Jaxb2中如何将avaBean转换为xml?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、简介JAXB(Java Architecture for XML Bindin...
    99+
    2023-05-31
    jaxb2 javabean xml
  • 如何将string转换为int类型
    在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。本文将向您介绍如何将字符串转换为整数。1. 使用内置函数int()Python...
    99+
    2023-08-02
  • java如何将map转换为对象
    要将Map转换为对象,可以使用反射来实现。首先,创建一个空对象,然后遍历Map的键值对,通过反射设置对象的属性值。假设有一个Pers...
    99+
    2023-08-24
    java map
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作