我們可以在 Spark 中使用 Kstream 嗎?
這是推薦的方法,還是使用 Spark Streaming 是更好的解決方案?
uj5u.com熱心網友回復:
我們可以在 Spark 中使用 Kstream 嗎?
當然。
這是推薦的方法嗎
不是真的(如果有的話)。
使用 Spark Streaming 是一個更好的解決方案。
“更好”引出了另一個問題“在什么情況下?”
Kafka Streams 是一個庫,因此可以在任何可以在應用程式中使用庫的地方使用,包括。火花應用。從這個意義上說,這是可能的,但恕我直言,幫助不大。
Kafka Streams 只是一堆使用消費者和生產者 API 來轉換記錄的執行緒。這正是 Spark Structured Streaming 中的 Kafka 資料格式。
Kafka Streams 應用程式被部署為獨立的 Java 應用程式(例如 k8s 中的 Docker 容器)。Spark Structured Streaming(在 Kubernetes 上使用 Spark)也可以做到這一點。
在單個應用程式中使用兩者看不到真正的好處,但會喜歡被證明是錯誤的。
uj5u.com熱心網友回復:
您不能將 Kafka Streams 與 Spark Streaming 一起使用。
例如,Kafka Streams 將使用來自主題的單個記錄,您將使用并行化呼叫將其映射到單個元素 Spark RDD?那么你就沒有使用 Spark Streaming 庫
其他方式,您使用來自 Spark Streaming 的 RDD。然后,沒有辦法將這些資料放入 Kafka Streams 拓撲中......
因此,它們不兼容“一起”使用。
或者,您可以部署一個可能“包含”Kafka Streams 拓撲的 Spark 應用程式,例如,如果您希望 KTable 作為每個 RDD 操作的一部分,但這與在任何其他 JVM 應用程式中嵌入 Kafka Streams 沒有什么不同。請記住,非流式 Spark 執行程式是短暫的和短暫的,任何 Kafka Streams 狀態都不會與 Spark 檢查點一起存盤
除此之外,如果您使用 Kubernetes,例如作為 Spark Scheduler,那么您可以部署單獨的容器;一個 Kafka Streams 應用程式可以將資料消費或生成到 Spark Streaming 中,反之亦然。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332712.html
標籤:阿帕奇火花 阿帕奇卡夫卡 火花流 apache-kafka-streams
