2017-04-01 5 views
1

私は、DataSet>という形式のタプルデータセットを持っています。フィールドStringの "全体"データセットをソートして、ファイル内のLong値のみを取得したいとします。 Flinkはソートパーティションを提供していますが、データセットを完全にソートする必要があるため、ここでは役に立ちません。Apache Flinkでデータセットをソートする方法は?

+0

前と後のデータのサンプルを?たぶんあなたが今までに試したコードとそれが失敗した方法は? –

答えて

5

また、あなたが1に並列処理を設定している場合、完全なDataSetをソートするsortPartition()を使用することができます。

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を範囲指定すると、ソートされたパーティションは互いに素な範囲になります。 –

関連する問題