java - 数据流/ApacheBeam 将输入限制为前 X 数量?

标签 java google-cloud-dataflow apache-beam

我有一个有界的 PCollection,但我只想获取前 X 个输入量并丢弃其余的。有没有办法使用 Dataflow 2.X/ApacheBeam 来做到这一点?

最佳答案

正如 @Andrew 在他的评论中所解释的,也许您可​​以在 Apache Beam 中使用 Top 转换(对于 JavaPython )。具体来说,Top.of() 函数返回一个 PTransform 和一个 PCollection,按比较器变换排序。

Here您可以找到一个简单的使用示例:

PCollection<Student> students = ...;
PCollection<List<Student>> top10Students = students.apply(Top.of(10, new CompareStudentsByAvgGrade()));

here另一个使用 Apache Beam Python SDK 的示例,它解决了在 PCollection 中返回单个元素的问题。

关于java - 数据流/ApacheBeam 将输入限制为前 X 数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49579110/

相关文章:

java - Java 中的父目录

google-bigquery - 与Google Pub/Sub + Dataflow相比,直接流入BigQuery的利弊

java - 为什么插入查询会导致我的数据流管道停止处理数据库插入?

google-cloud-dataflow - 连接两个流

java - 如何让OpenSessionInViewFilter排除静态资源

JAVA - 从迭代列表中删除非迭代器元素

java - 在 Java 中序列化选择性类变量

google-cloud-dataflow - 云数据流中最大并发作业数

rust - 将 Apache Beam 与 Rust 结合使用

java - 在数据流管道步骤中获取数据存储实体