我试图在cassandra中获取列的总和,但它返回负值,尽管我的列中并没有负值行。
cqlsh:samt> select cost from items where cost<0 allow filtering ;
cost
------
(0 rows)
但当我试图查询列的总和时,它返回:
select sum(cost) from items;
system.sum(cost)
------------------
-18485190
我试图聚合的行数超过100万,这是原因吗?
1条答案
按热度按时间nwlls2ji1#
欢迎使用堆栈溢出!您没有提供太多详细信息,所以我只能猜测列值太大,当它们全部相加时,会产生一个integer overflow。
在任何情况下,无界查询都很昂贵,因为它们需要全表扫描,并且可能会影响集群的性能,特别是在生产环境中运行时。如果需要运行全表聚合,应该在Spark中运行它们。
最后,为了将来的参考,你需要在提问时提供足够的背景信息。一般指导是:(a)提供问题的良好总结,包括软件/组件版本、完整错误消息+完整堆栈跟踪;(b) 描述你试图解决的问题,你所做调查的细节;以及(c)复制问题的最小样本代码。干杯