cassandra - 在 cassandra db 中执行用户定义的聚合函数时出现 ServerError:java.lang.AssertionError
问题描述
我已经在我的 cassandra db 中实现了用户定义的聚合函数平均值,如链接https://docs.datastax.com/en/dse/5.1/cql/cql/cql_using/useCreateUDA.html中所述
创建或替换函数 avgState ( state tuple<int,bigint>, val int ) 调用 NULL 输入返回 tuple<int,bigint> LANGUAGE java AS 'if (val !=null) { state.setInt(0, state.getInt( 0)+1); state.setLong(1, state.getLong(1)+val.intValue()); } 返回状态;';
创建或替换函数 avgFinal ( state tuple<int,bigint> ) 在 NULL 输入返回时调用 double LANGUAGE java AS 'double r = 0; if (state.getInt(0) == 0) 返回空值;r = state.getLong(1); r/= state.getInt(0); 返回 Double.valueOf(r);';
如果不存在则创建聚合平均 (int) SFUNC avgState STYPE tuple<int,bigint> FINALFUNC avgFinal INITCOND (0,0);
当查询返回至少一行进行聚合时,用户定义的聚合函数平均值可以正常工作。但是当聚合没有返回行时,查询输出错误ServerError: java.lang.AssertionError
请求帮助。
我的 cassandra db 版本是 [cqlsh 5.0.1 | 卡桑德拉 3.10 | CQL 规范 3.4.4 | 本机协议 v4]
提前致谢,乔治
解决方案
推荐阅读
- powershell - PowerShell 中的内存泄漏在连续运行中
- android - 如何为某个小部件 Flutter 指定拖动目标(单个 Draggable 被放入 3 个拖动目标而不是 1 个)
- r - 从R中的mongodb查询多个ID
- swift - 将带有字符串中数字的 XML 响应转换为 Int Swift
- binance - 无法在 Binance 的 Spot Test Network 上进行 MARKET 订单。返回空 JSON
- java - 让所有其他线程等到一个线程完成
- angular-cli - 我如何测试 ng-add 原理图
- python - Pycharm上Python运行代码报错的问题
- c# - 使用 Blazor 单击时发送动态参数
- python - 我可以根据用户输入在表中执行 SQL 查询吗?