我知道在BeamSQL中目前没有排序依据,对此有任何解决方法

时间:2018-11-23 02:20:53

标签: apache google-cloud-platform google-cloud-dataflow apache-beam apache-beam-io

这是存在的

PCollection<BeamRecord> rec = rec_out.apply(BeamSql.query(
  "SELECT bnk_name,state_name,val from PCOLLECTION order by val desc limit 2"));

但是我需要

PCollection<BeamRecord> rec = rec_out.apply(BeamSql.query(
  "SELECT bnk_name,state_name,val from PCOLLECTION order by val desc "));

1 个答案:

答案 0 :(得分:0)

这实际上无济于事。 PCollections在Beam中是无序的,因此您不能对整个输出应用排序。

梁没有排序,因为它通常不是必需的,通常是不可能的。使用排序的大多数问题都有另一种不需要全局排序的解决方案。

如果您描述有关如何使用SQL查询的输出的更多信息,我将用建议更新答案。

如果您不能共享更多内容,则可以选择在SQL查询之外使用Beam的sorter extension,但这并不是真正的全局排序,而是经过洗牌后的每个键顺序。