[英]Serilog + serilog-sinks-elasticsearch +ElasticSearch Auth
[英]Multiple elasticsearch sinks for a single flink pipeline
我的要求是將數據發送到不同的 ES 接收器(基於數據)。 例如:如果數據包含特定信息,則將其發送到 sink1 否則將其發送到 sink2 等(基本上根據數據將其動態發送到任何一個 sink)。 我還想分別為 ES sink1、ES sink2、ES sink3 等設置並行度。
-> Es sink1 (parallelism 4)
Kafka -> Map(Transformations) -> ES sink2 (parallelism 2)
-> Es sink3 (parallelism 2)
有沒有什么簡單的方法可以在 flink 中實現上述目標?
我的解決方案:(但不滿意)
我可以想出一個解決方案,但是我寫了一些中間的 kafka 主題(topic1、topic2、topic3),然后為 Essink1、Essink2 和 ESsink3 設置了單獨的管道。 我想避免寫這些中級 kafka 主題。
kafka -> Map(Transformations) -> Kafka topics (Insert into topic1,topic2,topic3 based on the data)
Kafka topic1 -> Essink1(parallelism 4)
Kafka topic2 -> Essink2(parallelism 2)
Kafka topic3 -> Essink3(parallelism 2)
您可以使用帶有側輸出 [2] 的 ProcessFunction [1] 將流拆分n種方式,然后將每個側輸出流連接到適當的接收器。 然后在每個接收器上調用setParallelism()
[3]。
[1] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/process_function.html#the-processfunction
[2] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/side_output.html
[3] https://ci.apache.org/projects/flink/flink-docs-stable/dev/parallel.html#operator-level
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.