我正在开发一个项目,我们将大量结构化原始数据摄取到Cassandra表中,然后使用Spark将其转换为目标模式。
由于我们的原始数据表变得非常大,我们希望分批处理它。这意味着Spark必须查看我们的原始数据表以识别尚未处理的行(通过分区键),然后将这些行的子集加载到Spark中。
对Cassandra不熟悉我现在想知道如何实现这一点。使用Spark,我可以非常有效地加载原始数据密钥,并将它们与转换表中的密钥进行比较,以识别子集。但是从原始数据表中加载这些行的子集的最佳策略是什么。
这是一个例子。如果我的架构如下所示:
CREATE TABLE raw_data (
dataset_id text PRIMARY KEY,
some_json_data text
);
...如果我的表格中有dataset_ids 1,2,3,4,5,并且知道我现在需要使用ID 4,5来处理行,那么我怎样才能有效地选择那些行知道列表在实践中,ids可能相当长?