我需要使用 SimpleStrategy 将本地节点复制到其他 Cassandra 数据库中的远程节点。有人知道我从哪里开始吗?
如果您要将数据写入两个集群,那么这里的主要复杂性是如何避免覆盖在本地设置之后在云中更改的数据。有几种可能性可以做到这一点:
-
如果表的结构相同(如果使用用户定义的类型,则包括键空间的名称),那么您只需将 SSTables 从本地计算机复制到云端,然后使用稳定加载器重播它们 - 在这种情况下,Cassandra 将遵循实际写入时间,并且不会覆盖更改的数据。另外,如果您要从表中进行删除,则需要在逻辑删除过期之前复制 SSTable。您不能每次都复制所有 SSTable,只能复制自上次数据上传以来发生更改的文件。但您始终需要从要上传的所有节点复制 SSTable。
-
如果结构不同,那么您可以考虑使用DSBulk or Spark Cassandra 连接器。在这两种情况下,您还需要使用写入时间导出数据,然后使用时间戳加载它。请注意,在这两种情况下,如果不同的列有不同的写入时间,那么您将需要单独加载该数据,因为 Cassandra 允许在更新/插入数据时仅指定一个时间戳。
对于 DSBulk,您可以按照示例 19.4 导出数据这篇博文,以及用于加载的示例 11.3(来自另一篇博文)。所以这可能需要一些 shell 脚本。另外,您需要有磁盘空间来保存导出的数据(但您可以使用压缩)。
对于 Spark Cassandra 连接器,如果两个节点均可从 Spark 访问,则无需中间存储即可导出数据。但是您需要编写一些 Spark 代码来使用以下命令读取数据RDD or 数据框 APIs.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)