繁体   English   中英

正在从Cassandra中获取数据?

[英]Getting data OUT of Cassandra?

如何在一段时间内(例如每小时或每天)或从Cassandra数据库中导出更新的记录来导出数据? 似乎使用带有日期字段的索引似乎可行,但是当我手动尝试时,我肯定会在cqlsh中超时,因此我担心这样做不可靠。

如果这不是正确的方法,那么人们如何将数据从Cassandra中提取到传统数据库中(用于分析,使用JOIN进行查询等)? 它不是一家Java商店,因此使用Spark并非易事(而且我们不想将整个系统更改为直接使用Spark而不是cassandra)。 我是否必须阅读sstables并尝试以这种方式跟踪它们? 有没有办法说“让我在时间点X之后受影响的所有记录”或“让我在时间戳X之后获得所有的更改”或类似的说法?

看起来Cassandra在快速读取和写入单个记录方面确实很棒,但是除此之外,如果您想将Cassandra的数据放入其他任何数据进行分析,仓储或查询,Cassandra似乎不是正确的工具...

正如您所说,Spark是最典型的做到这一点的工具。 它有效地做到了,并且使用起来非常可靠。 Cassandra并不是真正为OLAP工作负载而设计的,但是诸如火花连接器之类的东西有助于缩小差距。 DataStax Enterprise可能还有更多选项供您选择,但我不确定它们当前的产品。

您仍然可以使用普通的CQL查询来查询和分页整个数据集,只是速度并不快。 您甚至可以警惕ALLOW FILTERING,因为它非常昂贵并且会影响您的群集(为工作负载创建一个单独的DC,并对其使用LOCOL_CL查询会有所帮助)。 在这种情况下,您可能还会在< token()子句中添加< token()> token()以拆分查询并防止在任何一个协调器上进行过多的工作。 强烈建议您整理数据,以提高查询效率(例如,如果要进行时间片,则将其放入按时间存储的分区中并聚簇关键timeuuid,以便对时间的每个部分进行顺序读取)。

听起来有点俗气,但是cqlsh的CSV转储实际上非常快,如果您的数据集足够小,则可能对您有用。

除非您熟悉内部结构并使用hadoop或spark,否则我不建议您直接进入sstables。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM