gpt4 book ai didi

java - 使用 AnnotatedCompositeSerializer 放置的 Astyanax 复合列在几个小时后通过多个客户端变得无法获取

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:33 25 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我的 java 应用程序通过 astyanax 将列放入 cassandra。这似乎暂时有效,但几个小时后,该列似乎消失了如果我得到[行][复合列]。如果我获取整行,或者获取应该包含该列的一系列列,则返回该列。此行为发生在多个客户端中,包括 cassandra-cli 和 pycassa。例如:

get msg_metadata['someKey'];
=> (column=185779:completed, value={"timestamp":"1407777081","id":"167727"}, timestamp=1407777083241001)
Returned 1 results.
Elapsed time: 58 msec(s)

get msg_metadata['someKey']['185779:completed'];
=> (column=185779:completed, value={"timestamp":"1407777081","id":"167727"}, timestamp=1407777083241001)
Returned 1 results.
Elapsed time: 42 msec(s)

-- several hours later
get msg_metadata['someKey']['185779:completed'];
Value was not found
Elapsed time: 72 msec(s).

get msg_metadata['someKey'];
=> (column=185779:completed, value={"timestamp":"1407777081","id":"167727"}, timestamp=1407777083241001)
Returned 1 results.
Elapsed time: 107 msec(s)

我在 Cassandra 1.1.12 集群中创建了以下列族:

create column family msg_metadata
with column_type = 'Standard'
and comparator = 'CompositeType(org.apache.cassandra.db.marshal.IntegerType,org.apache.cassandra.db.marshal.AsciiType)'
and default_validation_class = 'UTF8Type'
and key_validation_class = 'AsciiType';

我有以下代码,使用 Astyanax 1.0.3

public class ColumnFamilies {
public static final AnnotatedCompositeSerializer<MyField> MY_FIELD =
new AnnotatedCompositeSerializer<MyField>(MyField.class);

public static final ColumnFamily<String, MyField> MESSAGE_METADATA =
new ColumnFamily<String, MyField>(
"msg_metadata", AsciiSerializer.get(), MY_FIELD);

public static class MyField {
@Component(ordinal = 0)
private Integer myId;

@Component(ordinal = 1)
private String fieldName;

public CustomerField(Integer myId, String fieldName) {
this.myId = myId;
this.fieldName = fieldName;
}
}
}

我的应用程序像这样写入列族:

    final MutationBatch mutationBatch = MESSAGE_METADATA.prepareMutationBatch();
final MyField field = new MyField(myId, fieldName);
mutationBatch.withRow(rowKey).putColumn(field, value, null);
mutationBatch.execute();

这让我困惑了一段时间。最初我认为问题可能出在列族上。我试过创建新的列族,但没有用。我怀疑复合列序列化出了问题,但这只是我的直觉。任何想法发生了什么以及我如何解决这个问题?谢谢!

最佳答案

只是预感 - 您可以尝试将 Composite Key 中的 IntegerType 更改为 Int32Type 并检查您是否遇到同样的问题?

关于java - 使用 AnnotatedCompositeSerializer 放置的 Astyanax 复合列在几个小时后通过多个客户端变得无法获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25265005/

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