Flinkでデータの重複を削除する方法は何ですか?

Flinkは、DataStream#keyBy関数とDataStream#distinct関数を使用してデータの重複を除去できます。

以下是一个示例代码,展示了如何使用Flink来实现数据去重功能。

import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

public class DataDeduplicationExample {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 创建一个包含重复数据的DataStream
        DataStream<Tuple2<String, Integer>> input = env.fromElements(
                new Tuple2<>("A", 1),
                new Tuple2<>("B", 2),
                new Tuple2<>("A", 1),
                new Tuple2<>("C", 3),
                new Tuple2<>("B", 2)
        );

        // 使用keyBy函数将数据按key分组
        DataStream<Tuple2<String, Integer>> deduplicated = input
                .keyBy(0)
                .distinct();

        deduplicated.print();

        env.execute("Data Deduplication Example");
    }
}

上記のサンプルコードでは、重複データを含むDataStreamを作成し、keyBy関数を使用して最初のフィールドでデータをグループ化しました。その後、各グループに対してdistinct関数を使用して重複を削除しました。最後に、重複を削除した結果を出力しました。

上記のコードを実行すると、次の出力結果が得られます。

(A,1)
(B,2)
(C,3)

重複データは削除されました。

bannerAds