gpt4 book ai didi

java - Cassandra 触发器

转载 作者:行者123 更新时间:2023-12-02 13:08:30 32 4
gpt4 key购买 nike

我是 Cassandra 新手,使用 Cassandra 3.10 并有类似的表格

create table db1.table1 (id text, trip_id text, event_time timestamp, mileage double, primary key(id, event_time));
create table db1.table2 (id text, trip_id text, start_time timestamp, mileage double, primary key(id, start_time));

我需要将按 trip_id 和里程总和聚合的数据从表 1 传输到表 2,并更新表 2 中的数据

我编写了一个触发器函数来获取列名称和值

public Collection<Mutation> augment(Partition partition) {
HashMap map = new HashMap();
CFMetaData cfm = partition.metadata();
String tableName = cfm.cfName;
try {
UnfilteredRowIterator it = partition.unfilteredIterator();
while (it.hasNext()) {
Unfiltered un = it.next();
Clustering clt = (Clustering) un.clustering();
Iterator<Cell> cells = partition.getRow(clt).cells().iterator();
while(cells.hasNext()){
Cell cell = cells.next();
map.put(cell.column().name.toString(), cell.value().array());
...
}
}
} catch (Exception e) {

}


...
}

但是如何获取主键和主键的值呢?如果这些无法获取,我如何使用触发器函数来完成这项工作?

最佳答案

是的,可以获取主键和值

要获取分区键列和值,请使用:

List<ColumnDefinition> partitionKeyColumns = cfm.partitionKeyColumns();
ByteBuffer partitionKeyValues = partition.partitionKey().getKey();

获取聚类键列和值:

List<ColumnDefinition> clusteringKeyColumns = cfm.clusteringColumns();
ByteBuffer[] clusteringKeyValues = clt.getRawValues();

关于java - Cassandra 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44044010/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com