将SparkStreaming Workers中的数据保存到数据库

时间:2016-09-19 14:59:45

标签: apache-spark spark-streaming datastax datastax-enterprise

在SparkStreaming中我们应该将保存部分卸载到另一个层,因为如果我们的数据库是cassandra,当我们使用SparkCassandraConnector时SparkStreaming上下文不可用。而且,即使我们使用其他数据库来保存我们的数据,我们也需要在每次处理一批rdds时在worker上创建连接。连接对象的原因未序列化。

  1. 是否建议在工人处创建/关闭连接?

  2. 明天我们可能会更改数据库,这会使我们的系统与现有数据库紧密结合

1 个答案:

答案 0 :(得分:2)

回答你的问题:

  1. 是的,在工人处创建/关闭连接绝对没问题。 但是,请确保不要为每条记录执行此操作。它是 建议在分区级别或其中的级别执行此操作 为一组记录创建/关闭连接。
  2. 您可以通过传递变量并在运行时决定数据库连接的类型来解耦它。
  3. 可能重复: Handle database connection inside spark streaming

    阅读此链接,它应该澄清一些问题 Design Patterns for using foreachRDD

    希望这有帮助!