问题描述
我正在尝试运行以下 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 (将#修改为@)