为什么没有JDBC Spark Streaming接收器?

问题描述 投票:0回答:2

我建议最好通过批量读取行并使用Spark Streaming处理它们来处理巨大的JDBC表。这种方法不需要将所有行读入内存。我想不监视表中的新行,而只需读取表一次。

我很惊讶,没有JDBC Spark Streaming接收器实现。实现Receiver看起来并不困难。

您能否描述为什么不存在这样的接收器(这种方法不好吗?)或提供实现的链接。

我找到了Stratio/datasource-receiver。但是它会在通过Spark Streaming处理之前读取DataFrame中的所有数据。

谢谢!

apache-spark jdbc spark-streaming
2个回答
2
投票

首先是实际的[[streaming源”将需要一种可靠的机制来监视更新,这根本不是JDBC接口的一部分,也不是主要RDBM的标准化(如果有的话)功能,更不用说其他平台了,可以通过JDBC访问。这意味着从这样的源流式传输通常需要使用日志复制或类似的工具,并且高度依赖于资源。

与您所描述的相同

建议最好通过批量读取行并使用Spark Streaming处理它们来处理巨大的JDBC表。这种方法不需要将所有行读入内存。我想不监视表中的新行,而只需读取表一次

确实不是流的用例。流处理无限的数据流,而您只是想作为partitioning的场景,而这种功能已经是标准JDBC连接器的一部分(无论是范围还是谓词)。

另外,基于接收器的解决方案无法很好地扩展,无法有效地对顺序过程进行建模。结果,它们的应用程序相当有限,并且如果数据有界,它的吸引力也不会降低(如果您要在单个节点上顺序读取有限的数据,则将Spark添加到等式中没有任何价值)。 >


0
投票
我认为这不是一个坏主意,因为在某些情况下,您的约束超出了您的能力范围,例如您不能在其中应用策略的传统系统,例如CDC,但仍必须将其用作流数据源。
© www.soinside.com 2019 - 2024. All rights reserved.