我们正在使用结构化流,并尝试对源数据执行一些重复数据消除。如果id列在20天内重复,我们需要用最早的事件时间更新。20天可能有100-150亿行。我们不想使用dropduplicates,因为这个州可能很大。我们正在考虑使用cassandra表来存储状态(比如id和min time)。每次触发微批处理时,我们都用微批处理中的id来查找存储状态的cassandra表。20天的ids也处于100-150亿的水平,换句话说,cassandra中的state表处于100-150亿的水平。那么,在每个微批次中查找或连接这个cassandra表是可行的吗?
1条答案
按热度按时间t0ybt7op1#
spark cassandra连接器在rdd api中有两个相应的函数:
joinWithCassandra
以及leftJoinWithCassandra
允许通过主键在cassandra中执行有效的数据查找,如下所示:connector开源版本的dataframe/dataset api不支持join with cassandra功能,但作为dse analytics一部分的连接器(所谓dse direct join)支持该功能。但您可以将数据转换为rdd,并通过现有api执行join。