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

在累积来自所有节点的数据后,使用CombineFn组合每个键的所有值

程谦
2023-03-14

我想在perKey的基础上迭代KV pCollection的值。我使用下面的代码组合使用自定义类,

PCollection<KV<String, String>> combinesAttributes =
              valExtract.get(extAttUsers).apply(Combine.<String, String>perKey(
                      new CombineAttributes()));

下面是我的自定义组合类,

public static class CombineAttributes implements SerializableFunction<Iterable<String>, String> {
   @Override
   public String apply(Iterable<String> input) {...}..}
incompatible types: CombineAttributes cannot be converted to com.google.cloud.dataflow.sdk.transforms.SerializableFunction<java.lang.Iterable<java.lang.String>,java.lang.String>

组合函数

public static class CombineAttributes extends CombineFn<Iterable<String>, CombineAttributes.Accum, String> {

public static class Accum {
  List<String> inputList = new ArrayList<String>();
}
public Accum createAccumulator() { return new Accum(); }
public Accum addInput(Accum accum, Iterable<String> input) {
  for (String item : input) {
    accum.inputList.add(item);
  }
  return accum;
}
public Accum mergeAccumulators(Iterable<Accum> accums) {
   Accum merged = createAccumulator();
   for (Accum accum : accums) {
     for (String item : accum.inputList) {
       merged.inputList.add(item);
     }
   }
   return merged;
 }
 public String extractOutput(Accum accum) {
   return "";
 }
}

没有可用于合并perKey扩展combineFN的示例代码。请让我知道上面的代码有什么问题。

共有1个答案

戚阳
2023-03-14

combineAttributes(无论以何种方式实现)将首先在每台机器上调用。因此,它可以将[attr1a,attr1b]组合成单个字符串或累加器(例如attr1a+attr1b)。然后,它将在另一台机器上运行,以将[attr1c]合并为attr1c。然后,它将合并所有这些部分结果,得到最终的累加器--attr1a+attr1b+attr1c。在原始实现的情况下,这将是最终的答案。在后者中,将对该累加器调用extractoutput

 类似资料:
  • 问题内容: 我试图在尝试对6参数函数进行任何复杂操作之前,遍历6参数函数的参数空间,以研究其数值行为,因此,我正在寻找一种有效的方法来执行此操作。 我的函数将6-dim numpy数组中给出的浮点值作为输入。我最初尝试做的是: 首先,我创建了一个函数,该函数接受2个数组并生成一个包含两个数组中值的所有组合的数组: 然后,我曾经将其应用于同一数组的m个副本: 最后,我这样评估我的功能: 这工作,但它

  • 以下是一个以1、2或3颗星评级的项目示例。我试图每月统计所有项目评分组合(星级)。 在下面的例子中,第10项在第1个月被评定,两个等级等于1,一个等级等于2,一个等级等于3。 对于给定的上述输入帧输出应该是: 我试图从以下代码开始解决这个问题,该代码的结果仍然需要转换为所需的输出帧格式,并且给出了错误的答案: 无论如何,应该有一个更好的方法来创建输出表,然后完成这个: ​

  • 本文向大家介绍php获取json数据所有的节点路径,包括了php获取json数据所有的节点路径的使用技巧和注意事项,需要的朋友参考一下 之前我们讲解过使用javascript获取json数据节点路径的问题,今天我们更进一步,讲解下php获取json数据所有的节点路径 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我有3个表:,, 我需要获得一个特定组中的用户列表,所有用户都需要包含作为成员的所有组。 我试过这样的东西: 但这将返回组中id为SOMEID所有用户,且仅连接用于搜索的一个组,即使一个用户是多个组的成员。 多谢了。

  • 我正在使用jsTree显示一个树。我想选择树中可以使用的所有节点。这工作得很好。 但是,这将展开所有节点,并且拥有一个大树将把其余的内容一直往下推。 我想在检查所有节点后折叠树,但使用不起作用。 有人有办法解决吗?

  • 问题内容: 时不时地,我遇到类似以下查询的情况: 在这种情况下,我想获得一个关联数组,使用&的值作为该数组的相应条目,例如,如果数据库包含:,则该数组应为。 最常见的方法是: *另一种方法是调用两次,然后使用创建数组。但是,由于涉及两个数据库两个调用,因此我将其省略。 还有另一种方法吗? 问题答案: 对于您的问题,有一个非常好的解决方案,即: 适用于我,在PostgreSQL 9.1和在Windo