2017-08-17 122 views
0

我试图使用SSTableLoader从Cassandra 2.1集群迁移表到Cassandra 3.11,而一些SStables成功加载后,我不断与其他人发生奇怪的错误。 我试图多次加载相同SSTables,有时我得到一个通用的Cassandra SStableLoader Streaming Error Broken pipe

java.util.concurrent.ExecutionException: org.apache.cassandra.streaming.StreamException: Stream failed

其他时间

org.apache.cassandra.io.FSReadError: java.io.IOException: Broken pipe

但是,如果我在SYSTEM.LOG检查我总是发现这样的错误:

java.lang.IllegalArgumentException: No column name component found in cell name

尝试搜索上面的错误,没有找到任何有用的细节。

我试着对2.x集群中的表进行nodetool修复,但几个小时后它看起来还没有完成。我会尝试使用nodetool scrub,但不知道这是否会导致数据丢失。

回答

0

问题是sssable格式在Cassandra 3.0中发生了变化,因此您不能只将sstables以2.1格式流式传输到3.x节点作为sstable格式。

官方(和更好的)方法是,您首先需要将节点升级到更新的C *版本,然后运行nodetool upgradesstables -a

+0

我无法将2.1节点升级到3.x,我将它们复制到3.11节点并尝试加载它们,如果我无法首先将它们导入到3.11中,如何升级sstables?我还在官方文档中发现了这一点: 仅在Cassandra 3.0.5和更高版本中支持在Cassandra 3.0之前的版本中创建的SSTable的批量加载。这表明应该支持导入,并且确实可以导入一些sstable。 – UrVal

+0

这是一个更新,我成功地从一个数据库装载了超过50个sstables到另一个数据库,它只是2个列存储区给出了这个错误,而不是所有的sstables,只是其中的大部分。 – UrVal

相关问题