如何为 CompositeType

问题描述

我正在尝试运行以下 cql 查询

Statement statement =
          new SimpleStatement(
           "SELECT blobastext(key),column1,column2 FROM keyspace.mytable");

ResultSet resultSet = session.execute(statement);
for (Row row : resultSet) {
        String key = row.getString(0);
        String column1 = row.getString(1);
        Long column2 = row.getLong(2);
        ...
}

尝试读取 column1 时出现以下异常:

com.datastax.driver.core.exceptions.CodecNotFoundException: 
Codec not found for requested operation:
 ['org.apache.cassandra.db.marshal.CompositeType(
    org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)' <-> java.lang.String]

表架构如下所示:

> describe mytable;

CREATE TABLE keyspace.mytable (
    key text,column1 text,column2 text,value blob,PRIMARY KEY (key,column2)
) WITH COMPACT STORAGE
    AND CLUSTERING ORDER BY (column1 ASC,column2 ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = '{"keys":"ALL","rows_per_partition":"NONE"}'
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 0
    AND gc_grace_seconds = 86400
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.01
    AND speculative_retry = '99.0percentile';

我发现我需要实现一个 custom codec,但我不清楚如何为 CompositeType 实现它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)