【问题标题】:Sort and limit in apache-beam/google-cloud-dataflowapache-beam/google-cloud-dataflow 中的排序和限制
【发布时间】:2019-03-13 14:45:07
【问题描述】:

假设我有以下格式的 PCollection:

-----------------------------------------
|   sale_id |   product_id  |   amount  |
|-----------|---------------|-----------|
|     1     |       a       |     1     |
|-----------|---------------|-----------|
|     2     |       b       |     12    |
|-----------|---------------|-----------|
|     3     |       c       |     3     |
|-----------|---------------|-----------|
|     4     |       d       |     100   |
|-----------|---------------|-----------|
|     5     |       e       |     4     |
-----------------------------------------

我的目标是只过滤X个畅销记录,即按数量排序,限制X个

在 apache Beam 中的实现方式是什么?

谢谢!

【问题讨论】:

    标签: google-cloud-dataflow apache-beam


    【解决方案1】:

    更新:

    BeamSQL[2] 支持“ORDER BY LIMIT”,如果你想试试的话。


    如果您使用 Java SDK,您可以使用内置的 TOP 转换[1] 来执行 ORDER BY LIMIT。 TOP 变换允许 DESC 和 ASC。

    如果您使用的是没有 TOP 的 SDK,您可以随时参考 TOP 的实现来编写自己的。

    1:https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Top.java

    2.https://beam.apache.org/documentation/dsls/sql/overview/

    【讨论】:

    猜你喜欢
    • 2021-05-10
    • 2018-01-25
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2018-01-03
    • 2020-03-27
    相关资源
    最近更新 更多