我有两台运行Cassandra的不同独立机器,我想将数据从一台机器迁移到另一台机器。
因此,根据数据税文档,我首先在机器1上拍摄了我的Cassandra集群的快照。
然后,我将数据移动到计算机 2,在那里我尝试使用 sstableloader 导入它。
注意:机器2上的keypsace(open_weather)和tablename(raw_weather_data)已创建,并且与机器1上的相同。
我使用的命令如下所示:
bin/sstableloader -d localhost "path_to_snapshot"/open_weather/raw_weather_data
然后得到以下错误:
Established connection to initial hosts
Opening sstables and calculating sections to stream
For input string: "CompressionInfo.db"
java.lang.NumberFormatException: For input string: "CompressionInfo.db"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:276)
at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:235)
at org.apache.cassandra.io.sstable.Component.fromFilename(Component.java:120)
at org.apache.cassandra.io.sstable.SSTable.tryComponentFromFilename(SSTable.java:160)
at org.apache.cassandra.io.sstable.SSTableLoader$1.accept(SSTableLoader.java:84)
at java.io.File.list(File.java:1161)
at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:78)
at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:162)
at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:106)
不幸的是我不知道为什么?
我不确定它是否与该问题有关,但不知何故,与我在机器 1 上已有的 *.db 文件相比,我的 *.db 文件的名称相当“奇怪”。
*.来自计算机1的db文件:
la-53-big-CompressionInfo.db
la-53-big-Data.db
...
la-54-big-CompressionInfo.db
...
*计算机 2 中的.db文件:
open_weather-raw_weather_data-ka-5-CompressionInfo.db
open_weather-raw_weather_data-ka-5-Data.db
我错过了什么?任何帮助都将不胜感激。我也愿意接受任何其他建议。COPY命令很可能无法工作,因为据我所知,它仅限于99999999行。
附言:我不想创建一个太大的帖子,但如果你需要任何进一步的信息来帮助我,请告诉我。
编辑:请注意,我在独立模式下使用Cassandra。
EDIT2:在我的目标机器(机器 2.1.4)上安装相同的版本 2.1.4 后,我仍然收到所有相同的错误。使用 SSTableLoader,我仍然会收到上述错误,并且手动复制文件(如 LHWizard 所述),在再次启动 Cassandra 并执行 SELECT 命令后,我仍然得到空表。
关于初始令牌,如果我在机器1上执行节点环,我会得到一个巨大的令牌列表。我不知道该如何处理这些令牌?
您的数据已经以快照(或备份)的形式存在,我过去所做的如下:
您不需要批量导入数据,如果您使用的是相同版本的cassandra,它已经是正确的格式,尽管您在最初的问题中没有指定。
我试图将cassandra集群从专用的DC迁移到EC2。作为开始,我拍了一张桌子的快照。为了加载数据,我在这个过程中尝试了sstableloader,但是我无法从我的cassandra节点指定主机(我正在尝试从我的cassandra节点运行sstable loader)。任何指导都会很有帮助。我用的是cassandra 1.0.1。
我有一个由4个节点组成的Cassandra(2.2.1)集群,由Java客户端应用程序使用。复制因子为3,读写的一致性级别为LOCAL_QUORUM。每个节点大约有5 GB的数据。请求量约为每秒2-4k。几乎没有删除操作,因此创建了少量的墓碑。 一段时间前,我注意到读写性能很差,而且随着时间的推移,性能越来越差——集群变得非常慢。读取(通常)和写入超时已变得非常频繁。硬件不应该引起问题,部署集群的
目前情况: 我通过执行以下命令创建了一个新的Cassandra映像“Cassandra”和一个名为“container-node”的容器: Docker pull Cassandra Docker images grep Cassandra Docker run-d--name cassandra-node--publish 9042:9042 cassandra 连接到容器:docker exe
命令在rest两个节点上运行,一切正常。当我想跑的时候 nodetool状态 命令时,我得到了这个错误消息
我刚接触Cassandra Spark,并尝试使用Spark主集群将数据从文件加载到Cassandra表。我遵循以下链接中给出的步骤 http://docs.datastax.com/en/datastax_enterprise/4.7/datastax_enterprise/spark/sparkImportTxtCQL.html 在第8步,数据显示为整数数组,但当我使用相同的命令时,结果显示为