我在Cassandra中有一个包含超过10,000,000条记录的表,但出于某种原因,我想构建另一个具有相同字段和几个附加字段的Cassandra表,并将之前的数据迁移到其中。现在这两个表位于同一个Cassandra集群中。
我想问一下如何在最短的时间内完成这项任务?
如果我的新表在不同的Cassandra,怎么做?
任何建议将不胜感激!
答案 0 :(得分:0)
如果您只需要向表中添加空白字段,那么最好的办法是使用alter table
命令将字段添加到现有表中。然后,不需要复制数据,新字段将在现有行中显示为null
,直到您将它们设置为某些内容。
如果要更改新表中数据的结构,或将其写入不同的集群,那么您可能需要编写一个应用程序来读取旧表的每一行,转换数据根据需要,然后将每一行写入新位置。
您也可以通过将数据导出到csv文件,编写程序以根据需要重新构建csv文件,然后将csv文件导入新位置来完成此操作。
另一种可能的方法是使用Apache Spark。您将现有表读入RDD,将数据转换并过滤为新RDD,然后将转换后的RDD保存到新表中。这只能在同一个集群中运行,并且设置起来相当复杂。