我有一个包含3列的Job_Status
表:
Job_ID (numeric)
Job_Time (datetime)
Machine_ID (numeric)
包含统计信息的其他几个字段(如内存,CPU利用率)
以固定间隔(比如说1分钟),在上表中为每台机器上运行的作业插入条目。
我想在Cassandra中设计数据模型。
我的要求是获取在2台或2台以上机器上同时运行的作业列表(对)。
我创建了一个表Job_Id
和Job_Time
作为行的主键,但为了达到预期的效果,我必须在检索后进行大量的数据解析的记录。
当记录数量达到50万左右时,需要花费大量时间。
这个要求需要像SQL的内部联接这样的操作,但是由于某些商业原因我不能使用SQL,而且如果我在SQL Server中尝试使用虚拟数据,那么使用如此庞大的数据集的SQL查询也会占用大量时间。 / p>
所以我需要你的帮助以下几点:
请建议一些替代设计/算法。我在这个问题上坚持了很长时间。
答案 0 :(得分:0)
这是一个非常广泛的问题。作为一种通用方法,您可能希望将Cassandra与Spark配对,以便您可以并行执行大型连接。
您可以在启动时将作业插入到表中,并在作业完成时将其删除(可能在插入时设置了TTL,以便不会删除的作业会在一段时间后自动删除)。
当您想要更新作业配对时,您需要运行一个火花批处理作业,将表数据加载到RDD中,然后对数据执行map / reduce操作,或使用spark SQL做一个SQL样式的连接。然后,您可能会将生成的RDD写回Cassandra表。