我正在尝试将Cassandra中的提交日志反序列化以用于研究项目。 到目前为止,我已成功地从提交日志中的突变条目反序列化单元名称和单元格值。
然而,我正在努力反序列化突变的主键条目,因为根据设计,主键的单元格值为空。我能得到的最接近的是从列族元数据的列定义中检索分区键名。但我不知道如何获得主键的实际值?
由于
以下是我对变异进行反序列化的方法:
// function in CommitLog.java
public ReplayPosition add(Mutation mutation){
Collection<ColumnFamily> myCollection = mutation.getColumnFamilies();
for(ColumnFamily cf:myCollection) {
CFMetaData cfm = cf.metadata();
// Retrieve name of partition key
logger.info("partition key={}.", cfm.partitionKeyColumns().get(0).name.toString());
for (Cell cell : cf){
// Retrieve cell name
String name = cfm.comparator.getString(cell.name());
logger.info("name={}.", name);
// Retrieve cell value
String value = cfm.getValueValidator(cell.name()).getString(cell.value());
logger.info("value={}.", value);
}
}
}