具有大量读写和与 Spark Structured Streaming 集成性能的数据存储

Posted

技术标签:

【中文标题】具有大量读写和与 Spark Structured Streaming 集成性能的数据存储【英文标题】:Datastore with huge number of read and write and integration performance with Spark Structured Streaming 【发布时间】:2018-09-20 06:34:58 【问题描述】:

我有一个用例,其中大约 1.5 亿条记录存储在 NoSQL 数据存储中。每天可能会发生大量新的插入或更新,例如分别以 10K 和 20-25 百万的顺序进行。这些更新是 Spark 结构化流的主题。我使用 HBase 作为初始解决方案,但我不确定它是否是最佳选择。在这里执行 biz 逻辑连接操作时,Spark 必须读取所有这 1.5 亿条记录,但每天两次。另一方面,每秒大约有 25-30K 记录在连续流式传输,在加入后必须在 Datastore 中更新。我浏览了this 文章。考虑到性能以及 Spark 结构化流集成,哪个 Datastore 是最佳选择?

【问题讨论】:

【参考方案1】:

HBase 是一个 KV 存储,其实很适合这个。

但如果我理解你的方法,你似乎想要加入。这当然不是方法。太多的数据,因此微批处理的时间已经过去,即使有缓存也是如此。 JOINing 仅适用于小型参考表(来自 Hive、KUDU)。

你需要类似的东西:

val query = ds.writeStream
              .foreach(new HBaseForeachWriter ...

看 Spark Structured Streaming with Hbase integration 寻求指导,您应该已经在路上了。

【讨论】:

以上是关于具有大量读写和与 Spark Structured Streaming 集成性能的数据存储的主要内容,如果未能解决你的问题,请参考以下文章

Spark Structured Streaming

Spark Structured Streaming

Spark Structured Streaming - 1

删除由 spark-structured-streaming 写入的损坏的 parquet 文件时,我会丢失数据吗?

无法使用Spark Structured Streaming在Parquet文件中写入数据

如何使用Spark Structured Streaming连续监视目录