簡體   English   中英

單個 flink 管道的多個彈性搜索接收器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM