0

我想使用多个 KeySelector 函数基于多个值对 POJO 数据集进行排序:

    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 cannot be chained”错误。根据 Flink 文档,应该可以链接 sortPartition 函数。

有没有办法在不使用字段表达式的情况下解决这个问题?

4

1 回答 1

1

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

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

于 2020-12-06T15:07:35.913 回答