基于多个KeySelector对Flink DataSet进行排序



我想基于多个值对POJO数据集进行排序,因此需要多个KeySelector函数:

DataSet<PoJo> data = input
.sortPartition(new KeySelector<PoJo, Integer>() { 
public Integer getKey(PoJo element) { return someKeyFromPojo(element); }}, Order.Descending)
.sortPartition(new KeySelector<PoJo, Integer>() { 
public Integer getKey(PoJo element) { return anotherKeyFromPojo(element); }}, Order.Ascending);

这产生一个";KeySelector不能被链接";错误根据Flink文档,应该可以链接sortPartition函数。

有没有一种方法可以在不使用字段表达式的情况下解决这个问题?

当且仅当您使用sortPartition(int field, Order order)sortPartition(String field, Order order)时,您可以连锁sortPartition调用。sortPartition(KeySelector<T, K> keyExtractor, Order order)不允许链接。

如果你必须计算密钥,那么你的KeySelector可以返回你喜欢的任何东西,只要它是可散列的和可比较的。例如,诸如(someKey, anotherKey)的元组。

相关内容

  • 没有找到相关文章

最新更新