據我了解,對于 spark 流應用程式(結構化流或其他),要手動管理偏移量,spark 提供了檢查點功能,您只需在寫入資料時配置檢查點位置(大多數時候是 hdfs)到您的水槽和火花本身將負責管理偏移量。
但是我看到很多不首選檢查點的用例,而是創建了一個偏移管理框架來將偏移保存在 hbase 或 mongodb 等中。我只是想了解為什么不首選檢查點,而是創建了一個自定義框架來管理偏移? 是不是因為它會導致在 hdfs 中創建小檔案問題?
https://blog.cloudera.com/offset-management-for-apache-kafka-with-apache-spark-streaming/
uj5u.com熱心網友回復:
小檔案只是 HDFS 的問題之一。從您列出的選項中更推薦 Zookeeper,因為您可能有一個 Zookeeper 集群(或多個)作為 Kafka 和 Hadoop 生態系統的一部分。
不使用檢查點的原因是它們與代碼的拓撲高度耦合。例如,如果您運行 map、filter、reduce 或其他 Spark 函式,那么這些函式的確切順序很重要,并被檢查點使用。
外部存盤將保持一致的順序,但具有不同的交付語意。
您也可以只存盤在 Kafka 本身中(但禁用自動提交)
https://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html#storing-offsets
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/477865.html
標籤:阿帕奇火花 阿帕奇卡夫卡 火花流 火花流卡夫卡 火花检查点
上一篇:如何使用PySpark將二維RDD中的字串轉換為int
下一篇:顯示列的第一次出現