2017-04-01 150 views
1

我有一個形式爲DataSet>的元組數據集。我希望對String字段上的「整個」數據集進行排序,然後只獲取文件中的Long值。 Flink確實提供了排序分區功能,但這對我並不有幫助,因爲我需要對數據集進行完全排序。如何對Apache Flink中的數據集進行排序?

+0

數據之前和之後的樣本?也許你迄今試過的代碼以及它失敗了嗎? –

回答

5

您還可以使用sortPartition()到完整DataSet進行排序,如果你設置的並行性1

DataSet<Tuple2<String, Long>> data = ... 
DataSet<Tuple2<String, Long>> sorted = data 
    .sortPartition(0, Order.ASCENDING).setParallelism(1); // sort in one partition 
DataSet<Long> longs = sorted.map(new LongExtractor()); // map to extract long 
+0

因此,如果並行性未設置爲1,那麼整個數據集將不會被完全排序?詳細地說,如果並行性設置爲2,那麼每個工作人員將對其數據進行排序,但跨分區不會有升序? –

+1

是的,沒錯。如果您在調用'sortPartition'之前對DataSet的Sort分區進行分區,則排序的分區將是不相交的分區。 –

相關問題