为了并行化和可伸缩性,我想使用Cassandra DB来存储我们的数据。到目前为止,我们的思维方式受到关系模型的强烈影响,因此我正在重新考虑我们访问和存储数据的方式。
我们的数据是在特定日期的特定行程的到达顺序:
seq trip day
1 153 2018-07-17
2 153 2018-07-17
3 153 2018-07-17
4 153 2018-07-17
我们已确定其到达时间:
seq trip day arrival
1 153 2018-07-17 10:00
2 153 2018-07-17 10:30
3 153 2018-07-17 11:00
4 153 2018-07-17 11:30
以及预测,这些预测是针对给定的未来序列(predSeq)在每个序列(currentSeq)上计算(predArrival):
currentSeq predSeq trip day predArrival
1 2 153 2018-07-17 10:32
1 3 153 2018-07-17 11:01
1 4 153 2018-07-17 11:28
2 3 153 2018-07-17 11:00
...
现在我们要估计预测是否正确。这样做的关系方式是使用WHERE从这些表中提取元素,并根据day,seq和trip将其与JOIN联接。 据我了解,强烈不建议在Cassandra中使用此功能。
显然我剩下的选项是:
(1)将Cassandra的提取转储到SparkSQL中,然后按“正常”方式进行。
(2)利用nosql结构将所有内容写在一行中
seq trip day arrival predArrival1 predArrival2 predArrival3...
您是否还有其他可能性?