为什么没有 JDBC Spark Streaming 接收器?
Why there is no JDBC Spark Streaming receiver?
我建议通过批量读取行并使用 Spark Streaming 处理它们来处理巨大的 JDBC table 是个好主意。这种方法不需要将所有行读入内存。我想 table 中没有新行的监控,只是读取 table 一次。
我很惊讶没有 JDBC Spark Streaming 接收器实现。实施 Receiver 看起来并不困难。
您能否描述为什么不存在这样的接收器(这种方法是个坏主意吗?)或提供实现链接。
我找到了 Stratio/datasource-receiver。但它会在 Spark Streaming 处理之前读取 DataFrame 中的所有数据。
谢谢!
首先,实际的 streaming 源需要一个可靠的机制来监控更新,这根本不是 JDBC 接口的一部分,也不是标准化的(如果at all) 主要 RDBM 的特性,更不用说其他平台了,可以通过 JDBC 访问。这意味着从这样的来源流式传输通常需要使用日志复制或类似设施,并且高度依赖资源。
和你描述的一样
suggest it's a good idea to process huge JDBC table by reading rows by batches and processing them with Spark Streaming. This approach doesn't require reading all rows into memory. I suppose no monitoring of new rows in the table, but just reading the table once
确实不是流媒体的用例。流式处理处理无限数据流,而您所问的只是 partitioning 的场景,并且此类功能已经是标准 JDBC 连接器的一部分(按范围或按谓词)。
此外,基于接收器的解决方案根本无法很好地扩展和有效地模拟顺序过程。因此,它们的应用相当有限,如果数据是有界的(如果你要在单个节点上顺序读取有限数据,那么将 Spark 添加到等式中就没有任何价值)。
我认为这不是一个坏主意,因为在某些情况下,您有超出您能力范围的限制,例如您无法对其应用 CDC 等策略但仍必须将其用作流数据源的遗留系统。
另一方面,Spark Structure Streaming 引擎在微批处理模式下需要定义一个可以提前的偏移量,如您所见in this class。所以,如果你的 table 有一些可以用作偏移量的列,你绝对可以从它流式传输,尽管据我所知 RDMDS 不是 "streaming-friendly"。
我开发了 Jdbc2s,它是 Spark 的 DataSource V1 流式源。如果需要,它还会部署到 Maven Central。坐标在文档中。
我建议通过批量读取行并使用 Spark Streaming 处理它们来处理巨大的 JDBC table 是个好主意。这种方法不需要将所有行读入内存。我想 table 中没有新行的监控,只是读取 table 一次。
我很惊讶没有 JDBC Spark Streaming 接收器实现。实施 Receiver 看起来并不困难。
您能否描述为什么不存在这样的接收器(这种方法是个坏主意吗?)或提供实现链接。
我找到了 Stratio/datasource-receiver。但它会在 Spark Streaming 处理之前读取 DataFrame 中的所有数据。
谢谢!
首先,实际的 streaming 源需要一个可靠的机制来监控更新,这根本不是 JDBC 接口的一部分,也不是标准化的(如果at all) 主要 RDBM 的特性,更不用说其他平台了,可以通过 JDBC 访问。这意味着从这样的来源流式传输通常需要使用日志复制或类似设施,并且高度依赖资源。
和你描述的一样
suggest it's a good idea to process huge JDBC table by reading rows by batches and processing them with Spark Streaming. This approach doesn't require reading all rows into memory. I suppose no monitoring of new rows in the table, but just reading the table once
确实不是流媒体的用例。流式处理处理无限数据流,而您所问的只是 partitioning 的场景,并且此类功能已经是标准 JDBC 连接器的一部分(按范围或按谓词)。
此外,基于接收器的解决方案根本无法很好地扩展和有效地模拟顺序过程。因此,它们的应用相当有限,如果数据是有界的(如果你要在单个节点上顺序读取有限数据,那么将 Spark 添加到等式中就没有任何价值)。
我认为这不是一个坏主意,因为在某些情况下,您有超出您能力范围的限制,例如您无法对其应用 CDC 等策略但仍必须将其用作流数据源的遗留系统。
另一方面,Spark Structure Streaming 引擎在微批处理模式下需要定义一个可以提前的偏移量,如您所见in this class。所以,如果你的 table 有一些可以用作偏移量的列,你绝对可以从它流式传输,尽管据我所知 RDMDS 不是 "streaming-friendly"。
我开发了 Jdbc2s,它是 Spark 的 DataSource V1 流式源。如果需要,它还会部署到 Maven Central。坐标在文档中。