我正在寻找 Cassandra/CQL 的常见 SQL 习惯用法 INSERT INTO ... SELECT ... FROM ...
的表亲,并且无法找到任何以编程方式执行此类操作的内容或在 CQL 中。只是不支持吗?
我的用例是从一个表到另一个表进行相当大的复制。我不需要任何特定的并发保证,但它有大量数据,因此我想避免编写从一个表检索数据的客户端,然后向另一个表发出批量插入的额外网络开销。我知道更改仍然需要根据复制设置在 Cassandra 集群的节点之间传输,但有一个“内部”选项来执行从一个表到另一个表的批量操作似乎是合理的。 CQL或者其他地方有这样的东西吗?我目前正在使用 Hector 与 Cassandra 交谈。
编辑:看起来 sstableloader
可能相关,但对于我希望成为相当常见用例的东西来说,它的级别非常低。在该框架中,仅将一个表中的行子集转移到另一个表中似乎也不那么简单。
最佳答案
正确, native 不支持此功能。 (另一种选择是映射/归约作业。)Cassandra 的 API 专注于大规模应用程序的简短请求,而不是批处理或分析查询。
关于Cassandra 内部批量插入操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633624/