Java 使用cassandra触发器

Java 使用cassandra触发器,java,triggers,cassandra,cqlsh,Java,Triggers,Cassandra,Cqlsh,我有一张像这样的卡桑德拉桌子: keyspace_name| columnfamily_name | column_name | component_index | -------------+-------------------+-------------+-----------------+ aw | test | as_of_date | 0 | aw | test

我有一张像这样的卡桑德拉桌子:

keyspace_name| columnfamily_name | column_name | component_index |
-------------+-------------------+-------------+-----------------+
          aw |      test         |  as_of_date |               0 |
          aw |      test         |        data |               1 |
          aw |      test         |   record_id |            null |
          aw |      test         | upload_time |               1 |
我不会创建将打印SLF4J的触发器,例如将以下一种格式插入的行:

key = key1
column_name1=value1
column_name2=value2
...
column_namen=valuen
是否可以在触发器中获取列名? 我尝试从互联网上获取示例,但它打印的数据不正确

public Collection<RowMutation> augment(ByteBuffer key, ColumnFamily update) {
    String localKey = new String(key.array(), Charset.forName("UTF-8"));
    logger.info("key={}.", localKey);

    for (Column cell : update) {
        try {
            String name = ByteBufferUtil.string(cell.name());
            logger.info("name={}.", name);

            String value = ByteBufferUtil.string(cell.value());
            logger.info("value={}.", value);               
        } catch (Exception e) {
            logger.info("Exception={}.", e.getMessage());
        }
    }

但是我不知道如何检测字段类型,我不明白为什么我不能使用ByteBufferUtil.stringcell.name获取列名。

要正确设置cellname和值的格式,必须使用CFMetaData。代码的正确版本应为:

public Collection<Mutation> augment(ByteBuffer key, ColumnFamily update)
{
    CFMetaData cfm = update.metadata();
    String localKey = cfm.getKeyValidator().getString(key);
    logger.info("key={}.", localKey);

    for (Cell cell : update) 
    {
       try 
       {
           String name = cfm.comparator.getString(cell.name());
           logger.info("name={}.", name);

           String value = cfm.getValueValidator(cell.name()).getString(cell.value());
           logger.info("value={}.", value);               
       } catch (Exception e) {
           logger.info("Exception={}.", e.getMessage());
       }
   }
   return Collections.emptyList();

}

我看到了这个主题,但我的问题没有答案:如何获取列类型?一般来说,keyvalue分离的规则是什么?您找到答案了吗?我也有类似的情况?不幸的是我没有找到这些信息
public Collection<Mutation> augment(ByteBuffer key, ColumnFamily update)
{
    CFMetaData cfm = update.metadata();
    String localKey = cfm.getKeyValidator().getString(key);
    logger.info("key={}.", localKey);

    for (Cell cell : update) 
    {
       try 
       {
           String name = cfm.comparator.getString(cell.name());
           logger.info("name={}.", name);

           String value = cfm.getValueValidator(cell.name()).getString(cell.value());
           logger.info("value={}.", value);               
       } catch (Exception e) {
           logger.info("Exception={}.", e.getMessage());
       }
   }
   return Collections.emptyList();