2016-06-28 119 views
0

我得到csv文件,读取这些文件并将它们写入到Cassandra。我这样做是为了获得大量数据(每天大约1000万行)文件本身相当小(从100行到1000行)检查数据是否已经存在很多数据

我想要做的是在将数据写入数据库之前进行检查,如果主数据库我即将插入的键已经存在。

我知道我可以用Select count(*) from table where primary key1 = something and key2 is something else来完成。

但是这很慢,我想检查一个完整的文件,如果它将影响已经在Cassandra中的数据,并且我想(需要)快速。 有没有办法实现我想要的? (或类似的东西,比如每批检查是否会影响行)

+0

你能张贴你的表架构?具体哪个键是一个分区,哪一个是聚类(如果有的话)? – yurgis

回答

1

您可以在INSERT语句中使用IF NOT EXIST,在UPDATE语句中使用IF EXIST。性能比计算所有行更好,但与插入相比,没有检查,速度慢。 Cassandra必须检查现有主键的所有节点。

文档的INSERT:https://docs.datastax.com/en/cql/3.1/cql/cql_reference/insert_r.html

和UPDATE: https://docs.datastax.com/en/cql/3.1/cql/cql_reference/update_r.html

+0

这并没有提供任何反馈哪些项目没有被正确插入? – Proliges

+0

你会得到一个真实的或假的。创建一个轻量级脚本。您可以为每行创建一个CQL命令,然后可以用行号记录该假。 –

+0

它确实很有意义,它确实有效,但我认为它会减慢速度。如果数据库中的数字增加,IF NOT EXISTS占用很多时间。我会牢记这一点,因为它做我想要的,但有点慢。 – Proliges

相关问题