我仍在尝试适应Cassandra的世界,我成功地将一些遗留问题从MySQL导入到了“legacy_imports” keyspace中。
问题是,我的工作版本位于另一个keyspace“stats”中,我想在某个地方保留“legacy_imports”并将其合并到“stats”中。
所需的操作只是将一些表(包括COUNTER表)从一个keyspace复制到另一个keyspace中,它们位于同一节点上。
我尝试使用COPY ... TO
,但出现错误:
<ErrorMessage code=0000 [Server error] message="com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - received only 1 responses.">
我还尝试使用sstableloader,但处理起来很困难。我的数据分布在两个磁盘上,路径看起来像这样:
/media/disk2/cassandra/data/legacy_imports/log_by_day-1e6b7de0a90111e49471715135b1c904/snapshots/1422680322490-log_by_day/legacy_imports-log_by_day-ka-1-Data.db
当我尝试使用sstableloader时,在legacy_imports目录中,我得到:
Could not retrieve endpoint ranges:
InvalidRequestException(why:No such keyspace: snapshots)
最后,如果我只在legacy_imports上执行它,我得到:
Exception in thread "main" java.lang.NullPointerException
at org.apache.cassandra.io.sstable.SSTableLoader.<init>(SSTableLoader.java:71)
at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:79)