目前我有一些pyspark代码,它是从kafka主题读取数据(readStream),我计划使用事务更新SQL Server表。流数据将具有所有三个插入、更新、删除事务。
你能建议一下实现这一目标的最佳方法吗?
发布于 2020-02-02 04:33:20
通过Pyspark代码读取Kafka主题,并在SQL server中更新事件(Insert,Update,Delete)将不是我感觉到的正确方法。
原因?
考虑一下在Kafka中发生的插入事件。在这种情况下,各个键在目标表中将不可用,可以直接写入目标表,而不会出现任何问题。但是当你在处理Kafka中的其他事件(更新和删除)时。我们不能在不比较现有键值的情况下直接将其写入Target表。要比较该键值,需要将整个数据集作为数据帧或RDD (我们知道,pyspark在内存中运行)带回内存,用于比较和覆盖目标表。在内存中处理整个目标表记录将不是正确的方法。
替代解决方案:我们可以选择Cassandra作为这个解决方案,因为C*正在使用向上插入模式。但Cassandra数据建模与SQL server不同。
https://stackoverflow.com/questions/59958509
复制相似问题