我想从 cassandra 那里得到一些时间序列数据我的表显示在图片上,当我进行查询时,得到的数据如下所示:首先,我看到的是所有错误的数据,无论我何时将它们插入Cassandra,然后我看到的是所有真实的数据。我的问题是:如何在插入数据时按时间对数据进行排序,以便在插入数据时能够保持数据的顺序。当我尝试“select c1 from table1 order by c2”时,我得到以下错误“ORDER BY仅在分区键受EQ或IN限制时才受支持”。谢谢你
mspsb9vt1#
假设您的模式类似于:
CREATE TABLE table1 ( c1, c2, PRIMARY KEY (c1))
这将在表中产生2个分区(c1 = true和c1=false)。每个分区将由一个节点管理。初始查询将从所有分区的表中检索数据。因此,它将转到第一个分区,检索所有行,然后转到第二个分区,检索所有行,这就是为什么您会看到这样的结果。Cassandra是针对仅跨一个分区检索数据而优化的,因此您应该考虑调整您的模式以允许这样做-要在查询中使用ORDER BY,您需要仅跨一个分区检索数据。根据您的用例,您可以考虑在应用程序中对数据进行分组或执行排序。
1条答案
按热度按时间mspsb9vt1#
假设您的模式类似于:
这将在表中产生2个分区(c1 = true和c1=false)。每个分区将由一个节点管理。
初始查询将从所有分区的表中检索数据。因此,它将转到第一个分区,检索所有行,然后转到第二个分区,检索所有行,这就是为什么您会看到这样的结果。
Cassandra是针对仅跨一个分区检索数据而优化的,因此您应该考虑调整您的模式以允许这样做-要在查询中使用ORDER BY,您需要仅跨一个分区检索数据。
根据您的用例,您可以考虑在应用程序中对数据进行分组或执行排序。