Beam/Dataflow 2.2.0 - 从 pcollection 中提取前 n 个元素

Posted

技术标签:

【中文标题】Beam/Dataflow 2.2.0 - 从 pcollection 中提取前 n 个元素【英文标题】:Beam/Dataflow 2.2.0 - extract first n elements from pcollection 【发布时间】:2018-06-24 07:55:19 【问题描述】:

有什么方法可以提取光束 pcollection 中的前 n 个元素?该文档似乎没有表明任何此类功能。我认为这样的操作首先需要一个全局元素编号分配,然后是一个过滤器——拥有这个功能会很好。

我使用Google DataFlow Java SDK 2.2.0

【问题讨论】:

这种操作的用例是什么?也许您需要某些标准的前 N ​​个元素? (Top 变换)或者你需要any N 个元素吗? (样本变换) + 请说明你是使用Java还是Python SDK 是的,Top 确实起到了作用。请将其发布为答案,以便我可以标记已回答的问题。 【参考方案1】:

PCollection 本身是无序的,因此“前 N 个元素”的概念不存在 - 但是:

如果您需要某个标准的前 N ​​个元素,您可以使用the Top transform。

如果您需要任何 N 个元素,您可以使用Sample。

【讨论】:

如果我必须从 Max/Min Tranforms 返回的 PCollection 中提取单个元素怎么办? 那么“提取”是什么意思?该集合已经有一个元素(每个窗口)。 Extract 表示将单个元素的Pcollection转换为对应的整数或长整数。比方说,我有一个整数的 PCollection,我需要找到 MAX,然后我可以应用 MAX 变换。但在这种情况下,我将得到一个输出为 Pcollection of Integers,它只有一个元素,即 Max Integer。我想将该 PCollection 转换为 Integer 以提取最大值。 请参阅 ***.com/questions/48668686/… 或 ***.com/questions/28015924/… - 根据设计,这是不可能直接实现的,但有一些变通方法。

以上是关于Beam/Dataflow 2.2.0 - 从 pcollection 中提取前 n 个元素的主要内容,如果未能解决你的问题,请参考以下文章

数据流 - 状态持久性数据库

解题笔记-洛谷-P1010 幂次方

快速幂的思想

夯实基础——P2084 进制转换

洛谷 P1010 幂次方

iOS:从 cordova 2.2.0 升级到 2.3.0 时面临问题