前のデータ解析プログラム(バージョン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:
あなたはあなたに私の記事が参考と思われる場合は、赤い封筒またはスキャンコードの下で支援を受けるために、コードをスキャンすることができます(、ペニーは愛乱数である)、ありがとうございました!
アリペイ赤い封筒 | アリペイ | マイクロ手紙 |
---|---|---|