[
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)