FLINKはSideOutPutは流用を実装スプリット置き換え使います

前のデータ解析プログラム(バージョン1.4.2)、にKafka元のデータストリームを読み取り、呼び出しsplitインタフェース転換を。
新しいプロジェクトが使用することを決定したFlink 1.7.2使用のsplitインタフェース転換を、私たちは、インタフェースとしてマークされたdepracted(フォローアップが削除される可能性があります)。
関連文書を検索する、私たちは、新しいバージョンの見つけFlink推奨される使用の帯域外データの流用を。

予め確立されたOutputTag(実施例LogEntityからkafkaログ読み込んだクラスのインスタンス)。

private static final OutputTag<LogEntity> APP_LOG_TAG = new OutputTag<>("appLog", TypeInformation.of(LogEntity.class));
private static final OutputTag<LogEntity> ANALYZE_METRIC_TAG = new OutputTag<>("analyzeMetricLog", TypeInformation.of(LogEntity.class));

うちkafkaで読み取った原稿のデータprocessインタフェース、対応するタグでマークされました。

    private static SingleOutputStreamOperator<LogEntity> sideOutStream(DataStream<LogEntity> rawLogStream) {
        return rawLogStream
                .process(new ProcessFunction<LogEntity, LogEntity>() {
                    @Override
                    public void processElement(LogEntity entity, Context ctx, Collector<LogEntity> out) throws Exception {
                        // 根据日志等级,给对象打上不同的标记
                        if (entity.getLevel().equals(ANALYZE_LOG_LEVEL)) {
                            ctx.output(ANALYZE_METRIC_TAG, entity);
                        } else {
                            ctx.output(APP_LOG_TAG, entity);
                        }
                    }
                })
                .name("RawLogEntitySplitStream");
    }

    // 调用函数,对原始数据流中的对象进行标记
    SingleOutputStreamOperator<LogEntity> sideOutLogStream = sideOutStream(rawLogStream);
    // 根据标记,获取不同的数据流,以便后续进行进一步分析
    DataStream<LogEntity> appLogStream = sideOutLogStream.getSideOutput(APP_LOG_TAG);
    DataStream<LogEntity> rawAnalyzeMetricLogStream = sideOutLogStream.getSideOutput(ANALYZE_METRIC_TAG);

以上の工程により、データ・ストリームのセグメンテーションを実現しています。

PS:
あなたはあなたに私の記事が参考と思われる場合は、赤い封筒またはスキャンコードの下で支援を受けるために、コードをスキャンすることができます(、ペニーは愛乱数である)、ありがとうございました!

アリペイ赤い封筒 アリペイ マイクロ手紙

おすすめ

転載: www.cnblogs.com/jason1990/p/11610130.html