当前位置: 首页 > 知识库问答 >
问题:

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

夏侯星洲
2023-03-14

我正在使用Apache Beam GoSDK,很难以正确的格式按键分组/组合PCollection。

我在PCollection的字符串中每个键有多条记录,如下所示:

Bob, cat
Bob, dog
Carla, cat
Carla, bunny
Doug, horse

我想使用GroupByKey和CombinePerKey,这样我可以像这样聚合每个人的宠物:

Bob, [cat, dog]
Carla, [cat, bunny]
Doug, [horse]

如何转换PCollection

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

我可以使用ParDo来获取字符串键和字符串值,如下所示,但我不知道如何转换为KV

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}

共有1个答案

邵锐
2023-03-14

要映射到KV,您可以应用MapElements并使用into()来设置KV类型,并在via()逻辑中,创建一个新的KV. of(myKey, myValue),例如,获取KV

    PCollection<KV<String, String>> kvPairs = linkpages.apply(MapElements.into(
        TypeDescriptors.kvs(
            TypeDescriptors.strings(),
            TypeDescriptors.strings()))
        .via(
            linkpage -> KV.of(dataFile, linkpage)));

 类似资料:
  • 我得到了谷歌云存储桶的URL。我必须: > 对于每个blob,我进行一些gcsapi调用,以获取关于blob的信息(blob.size、blob.name等) 对于每个Blob,我还必须读取它,在它里面找到一些东西,并将其添加到从GCS API调用中获得的值中 对于每个blob,我必须将步骤2和步骤3中找到的关于blob的值写入BigQuery 我有数千个blob,因此这需要使用ApacheBea

  • 问题内容: 我在mySQL 5.1中有一个数据类型的日期列。如何将其转换为DATE? 这是我到目前为止所拥有的- 得到这个 错误-#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’FROM 7 FOR 4附近使用) 请帮忙。 问题答案: 您可以使用MySQL的功能 尽管我怀疑您使用Unix时间戳会更轻松

  • 问题内容: 有没有一种简单的方法可以避免处理文本编码问题? 问题答案: 您确实无法避免处理文本编码问题,但是Apache Commons中已有一些解决方案: 至: 至: 您只需要选择所需的编码即可。

  • 问题内容: 如何使用Java将Dicom文件(.dcm)转换为jpeg图像?这是我的代码: 我在运行项目时遇到以下错误 请帮助并提前感谢 问题答案: 这是使用dcm4che 2将DICOM转换为JPEG的链接 以下是我的代码,效果很好,我将其与导入一起放置,因此可能用完了。 用于运行它的罐子 dcm4che-imageio-2.0.28.jar dcm4che-image-2.0.28.jar j

  • 问题内容: 我正在使用A 将Json从Web转换为字符串。 这可能很简单,但是我似乎无法将此字符串转换为。 我怎样才能做到这一点? 问题答案: 请参阅文档和示例。

  • 问题内容: 如何在Java中将org.jdom.Document转换为字符串? 问题答案: