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

在保留键的同时对值应用PTransform

公羊俊德
2023-03-14

我似乎正在与光束中的这种模式作斗争。这是一个流式管道。

在高水平上:

  • 消息传入兔子
  • 消息内容包括一个ID和N个S3文件路径
  • 我希望在列出的所有S3文件中产生一些聚合,但结果应该由原始消息键控
  • 向rabbit写一条带有聚合结果的消息,每个传入消息一条

不可避免的是,我最终得到了一些pCollection[kv[MessageId,S3FilePaths]],并希望在S3FilePaths上应用一系列pTransforms,但不要忘记它们最初是由MessageId键控的。

我似乎找不到一个通用的“映射KV pcollection的值但保留密钥”功能,我认为我必须使用PTransform(与dofn)相反),因为文件IO已经全部实现为pTransforms。

我是不是从根本上想错了?任何帮助都是非常感谢的。

更新:抱歉对细节不够详细。在一个令人沮丧的周五结束时发布这篇文章是我自己的错。

我有几个基本的绊脚石:

    null

在这一点上,我有一些工作的端到端。我的代码实际上是用scio编写的,所以共享有点棘手,但级别很高:

  1. 在固定的1秒窗口中使用repeatedly.forever(Afterprocessingtime.PastFirstElementInpane())触发器读取RabbitMQ,并小心使用processContext.output在整个窗口中保留窗口和时间戳
  2. 始终使用pcollection[(MessageId,V)](scalatuple2语法)的一般形状。当v是S3文件的路径时,我使用发出文件内容的路径中的ptransform
  3. 聚合是在分组到pcollection[kv[(MessageId,FileElementId),FileElement]]之后进行的,然后再还原到pcollection[MessageId,FileElement]以便保留减少每个传入消息的语义。

第二个让我有点失望。我希望能够利用beam文件系统函数从文件中读取,并将每个输出与指定的消息id组合在一起。但我现在处境很好。

共有1个答案

吕修筠
2023-03-14

如果kv 只接受keytvaluet,则无法将转换应用于kv 。如果在对值应用转换时需要保留键,那么推荐的方法是编写自己的dofns,它可以接受kV,但忽略键,或者重组管道,这样就不会依赖于需要删除键的转换的输出。

 类似资料:
  • 因为匹配器“*”丢弃简单键值对。我知道我错过了什么。有人帮忙吗?

  • 我在计算一个键的出现次数时遇到了一些问题,同时也保留了几个值。 通常我只会: 它给出了每个关键点的出现次数。 但是,我还希望在计算键的出现次数的同时,保留键每次出现的值。类似这样: 例如:如果键x(1)是一个国家,而x(2)是一个城市,那么我想保留一个国家的所有城市,并知道一个国家有多少个城市。

  • 是否可以在保留其键的同时存储 行? 假设我有下面的虚拟表: 我想存储此表,以便行按排序,并按按递减顺序排序,即: 显然,我可以将它保存为一个新变量,但是我还想将< code>id列作为我的主键。 Arun对“在data.table中设置键的目的是什么?”建议这可以通过巧妙使用< code>setkey来实现,因为它按照键的顺序对data.table进行排序(尽管没有将键设置为降序的选项): 但是,

  • 问题内容: 我已经使用JavaScript原型和继承构建了一个大型应用程序。但是我很难组织我的代码。例如,我有一个类轮播,它具有许多类似这样的功能: 我想这样组织我的代码: 但是,这将导致“ this”的值丢失。我可以使用全局实例来跟踪它,但是当类被继承时这会引起问题,例如,在另一个文件中,我有类似的东西可以覆盖父类。 我的继承是这样完成的: 所以我可以做: 有谁知道我该如何处理“ this”值?

  • 问题内容: 对于学校,我正在为游戏的排名列表编写一个小程序。为此,我使用字典,将玩家的名称作为键名,将分数作为键值。将有10场比赛,每场比赛都有一个自动排名系统,我将其打印到文件中。香港专业教育学院已经设法编码排名系统,但现在我面临更大的挑战,我无法解决: 我必须进行总体排名,这意味着someplayername可以在具有多个得分的多个比赛中使用,但我只需要保留重复项中的最高得分即可。 简而言之

  • 问题内容: 我有一个名为“ Group”的实体类,NetBeans警告我“实体表名称是保留的Java Persistence QL关键字”。 类似的情况是使用保留的SQL关键字。 这个名字会被转义吗?使用其他表名可以解决@Table(name =“ otherName”)的问题。还是应该重命名课程? 问题答案: 这个名字会被转义吗? 有 没有 在JPA规范是这么说的,如果您的提供商做,这是供应商特