【问题标题】:What is the best way to migrate data in Cassandra在 Cassandra 中迁移数据的最佳方法是什么
【发布时间】:2020-05-08 07:06:53
【问题描述】:

我有一个包含 5 个节点的 Cassandra 集群,带有 writeConsistency: LOCAL_QUORUM。集群有 TB 的数据。现在我需要将数据迁移到同一集群中的不同keyspace。以下是要求。

keyspace_1 --> read data --> transform --> insert in keyspace_2.

现在我们可以通过一些多实例微服务来做到这一点,我们可以从keyspace_1 读取数据,然后对其进行转换,然后将其插入到目标键空间中。

但是有没有更好的方法。我找到了一篇文章How to migrate data from Cassandra cluster of size N to a different cluster of size N+/-M。但这里主要是 SSTable 在没有任何转换的情况下被转移。但我需要介于两者之间的数据转换机制。任何人都可以在这里建议我一个好方法/有人之前做过这种类型的活动吗?

【问题讨论】:

    标签: spring-boot database-migration cassandra-3.0 spark-cassandra-connector


    【解决方案1】:

    最简单的方法是使用 Spark 加载数据、执行转换并将数据保存到新表中 - 由于 Spark 能够执行数据处理的自动并行化,这将比使用 Spring Boot 更容易。根据您的要求,您可以使用 Spark Cassandra 连接器的 Spark SQL APIRDD API

    val df = sqlContext.read
      .format("org.apache.spark.sql.cassandra")
      .options(Map("keyspace" -> "ks", "table" -> "tab))
      .load
    
    val dfTransformed = df.select.... // do transformation
    
    dfTransformed.write
      .format("org.apache.spark.sql.cassandra")
      .options(Map("keyspace" -> "ks2", "table" -> "tab))
      .save
    

    如果您不使用 Spark,则需要对所有数据执行完整扫描,转换读取数据并写入它们 - 但这是一项更复杂的任务,因为您需要处理故障等。此外,有效从 Cassandra 读取数据并非易事 - 您可以查看 code example,但我建议先查看 Spark。

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2016-10-16
      • 2013-08-10
      • 2020-04-15
      • 2013-04-09
      相关资源
      最近更新 更多