【问题标题】:Cassandra: aggregate function INITCOND with complex user defined typeCassandra:具有复杂用户定义类型的聚合函数 INITCOND
【发布时间】:2018-03-18 18:45:13
【问题描述】:

什么可以作为 Cassandra 中用户定义的聚合函数的 INITCOND?我只见过简单类型的示例(例如元组)。

我在聚合函数中的状态对象有以下类型:

create type avg_type_1 (
    accum tuple<text,int,double>,   // source, count, sum
    avg_map map<text,double>        // source, average
);

当我省略 INITCOND 时,我得到一个 Java NullPointerException。

【问题讨论】:

    标签: cassandra user-defined-functions cql user-defined-types


    【解决方案1】:

    以下适用于问题中的 UDT:

    INITCOND ((null, 0, 0.0), null)
    

    accum字段(元组):第一个元素(source,String)设置为null,第二个元素(count,int)设置为0(零),第三个和最终元素 (sum, double) 设置为 0.0(零)。

    avg_map 字段(地图):设置为 null(还没有地图)。

    这些字段也可以通过名称来引用,如下所示(来自 describe ...)。

    INITCOND {accum: (null, 0, 0.0), avg_map: null};
    

    对于命名字段,使用大括号“{}”(因为它们表示为地图)。

    最后,这里还有一个初始化地图的例子。

    INITCOND {accum: (null, 0, 0.0), avg_map: {'i1': 23.5, 'i2': 1.2}};
    

    【讨论】:

      猜你喜欢
      • 2018-05-21
      • 2016-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2014-12-31
      • 2017-10-13
      • 2019-03-06
      • 1970-01-01
      相关资源
      最近更新 更多