[ 
https://issues.apache.org/jira/browse/FLINK-3234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15138577#comment-15138577
 ] 

ASF GitHub Bot commented on FLINK-3234:
---------------------------------------

Github user fhueske commented on a diff in the pull request:

    https://github.com/apache/flink/pull/1585#discussion_r52282118
  
    --- Diff: 
flink-java/src/main/java/org/apache/flink/api/java/operators/SortPartitionOperator.java
 ---
    @@ -36,27 +40,58 @@
      */
     public class SortPartitionOperator<T> extends SingleInputOperator<T, T, 
SortPartitionOperator<T>> {
     
    -   private int[] sortKeyPositions;
    +   private List<Keys<T>> keys;
     
    -   private Order[] sortOrders;
    +   private List<Order> orders;
     
        private final String sortLocationName;
     
    +   private boolean useKeySelector;
     
    -   public SortPartitionOperator(DataSet<T> dataSet, int sortField, Order 
sortOrder, String sortLocationName) {
    +   private SortPartitionOperator(DataSet<T> dataSet, String 
sortLocationName) {
                super(dataSet, dataSet.getType());
    +
    +           keys = new ArrayList<>();
    +           orders = new ArrayList<>();
                this.sortLocationName = sortLocationName;
    +   }
    +
    +
    +   public SortPartitionOperator(DataSet<T> dataSet, int sortField, Order 
sortOrder, String sortLocationName) {
    +           this(dataSet, sortLocationName);
    +           this.useKeySelector = false;
    +
    +           ensureSortableKey(sortField);
     
    -           int[] flatOrderKeys = getFlatFields(sortField);
    -           this.appendSorting(flatOrderKeys, sortOrder);
    +           keys.add(new Keys.ExpressionKeys<>(sortField, getType()));
    +           orders.add(sortOrder);
        }
     
        public SortPartitionOperator(DataSet<T> dataSet, String sortField, 
Order sortOrder, String sortLocationName) {
    -           super(dataSet, dataSet.getType());
    -           this.sortLocationName = sortLocationName;
    +           this(dataSet, sortLocationName);
    +           this.useKeySelector = false;
    +
    +           ensureSortableKey(sortField);
    +
    +           keys.add(new Keys.ExpressionKeys<>(sortField, getType()));
    +           orders.add(sortOrder);
    +   }
    +
    +   public SortPartitionOperator(DataSet<T> dataSet, Keys<T> sortKey, Order 
sortOrder, String sortLocationName) {
    --- End diff --
    
    Change the `sortKey` parameter type to `SelectorFunctionKeys` (or accept 
the `KeySelector` and create the `SelectorFunctionKeys` in the constructor.


> SortPartition does not support KeySelectorFunctions
> ---------------------------------------------------
>
>                 Key: FLINK-3234
>                 URL: https://issues.apache.org/jira/browse/FLINK-3234
>             Project: Flink
>          Issue Type: Improvement
>          Components: DataSet API
>    Affects Versions: 1.0.0, 0.10.1
>            Reporter: Fabian Hueske
>            Assignee: Chiwan Park
>             Fix For: 1.0.0
>
>
> The following is not supported by the DataSet API:
> {code}
> DataSet<MyObject> data = ...
> DataSet<MyObject> data.sortPartition(
>   new KeySelector<MyObject, Long>() {
>     public Long getKey(MyObject v) {
>       ...
>     }
>   }, 
>   Order.ASCENDING);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to