【问题标题】:Cassandra InvalidRequestException(why:[MyKeyspace][MyColumnFamily][6675...6c74] = [6c86......e65720] failed validation (String didn't validate.))Cassandra InvalidRequestException(为什么:[MyKeyspace][MyColumnFamily][6675...6c74] = [6c86......e65720] 验证失败(字符串未验证。))
【发布时间】:2011-10-23 22:09:08
【问题描述】:

我正在使用 Cassandra 和 Hadoop 进行输入和输出。在输出减少工作期间,我收到了一个错误:

2011-08-10 03:54:04,326 WARN org.apache.hadoop.mapred.Child: Error running child
java.io.IOException: InvalidRequestException(why:[MyKeyspace][MyColumnFamily][66756c6c74657874] = [6c696e6bb66e68656974207a756d.................65697465726520536f6e67746578746520] failed    validation (String didn't validate.))
at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:19045)
at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:1035)
at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:1009)
at   org.apache.cassandra.hadoop.ColumnFamilyRecordWriter$RangeClient.run(ColumnFamilyRecordWriter.java:285)
2011-08-10 03:54:04,339 INFO org.apache.hadoop.mapred.Task: Runnning cleanup for the task
2011-08-10 03:54:04,340 WARN org.apache.hadoop.io.UTF8: truncating long string: 267364 chars, starting with java.io.IOException:

根据日志,这不是在开始时发生的,而是在成功合并、排序和处理 8981 个键之后发生的。在 8982 日它失败了。

在 google 和 stackoverflow 上搜索过,但没有找到。

列族是这样的:

create column family MyColumnFamily with comparator = UTF8Type and                                                                                        
key_validation_class=UTF8Type and 
column_metadata = 
[
{column_name: column1, validation_class: UTF8Type, index_type: 0},
{column_name: column2, validation_class: UTF8Type, index_type: 0},
{column_name: column3, validation_class: UTF8Type, index_type: 0}
];

提前谢谢你!

【问题讨论】:

    标签: java hadoop mapreduce cassandra


    【解决方案1】:

    这意味着您的列值之一实际上不是有效的 UTF8 编码字符串。消息中的第一个十六进制字符串是以字节为单位的列名,第二个是无法解码的字节。

    【讨论】:

    • 感谢您的回复,我们在作业失败之前进行了 4 次重试,但是从第 2 次或第 3 次重试开始,它可以工作,但会阻塞下一个数据。它是否以某种方式连接到内存或堆?
    • 我也遇到过同样的问题。我尝试将Timestamp(long integer, not convert to string)存入UTF8Type类型列。转换为string后,代码就OK了。
    猜你喜欢
    • 2014-07-12
    • 2021-06-19
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多