将JDBC数据库数据保存为共享状态Spark

时间:2019-03-25 18:44:36

标签: scala apache-spark apache-spark-sql

我有一个MSSQL表作为数据源,我想以时间戳的形式保存某种处理偏移量(它是表的列之一)。因此有可能处理来自最新偏移量的数据。我想保存为Spark会话之间的某种共享状态。我研究了shared state in Spark session,但是,我找不到在共享状态下存储此偏移量的方法。那么可以使用现有的Spark构造来执行此任务吗?

1 个答案:

答案 0 :(得分:1)

据我所知,尚无官方内置功能支持在Spark中会话之间传递数据。作为替代方案,我将考虑以下选项/建议:

  1. 首先,offset列必须是MSSQL中的索引字段,以便能够快速查询它。
  2. 如果您的项目已经安装并使用了内存(即Redis,Apache Ignite)系统,我将在其中存储偏移量。
  3. 我不会使用像Kafka这样的消息队列系统,因为一旦您消费了一条消息,您将需要重新发送它,因此这毫无意义。
  4. 作为解决方案,我宁愿将其保存在文件系统或Hive中,即使这样做会增加额外的开销,因为该表中只有一个值。当然,在文件系统的情况下,性能会更好。

让我知道是否需要进一步的信息