gpt4 book ai didi

cassandra - 如何在cassandra中进行数据迁移

转载 作者:行者123 更新时间:2023-12-04 16:51:49 25 4
gpt4 key购买 nike

我们有一个共同的需求(数据迁移)来批量修改user id列等数据(将user id 001改为002,将user id 003改为004)。但是表 1 中的用户 ID 字段不是主键(除了 select * from table 之外,我们无法更新所有行),而表 2 中是主键(这种情况我们可以处理)。所以我们没有办法使用所有表的 where 原因来选择所有数据。

那么如何满足这个要求呢?

我只是想出两种方法:

(1) select * from table with fetch size setting。然后更新它。//方法对吗?
(2) 使用copy命令到一个CVS,修改后再次导入。//性能很慢?

这些方法是否可以用于生产(具有 > 百万条记录。)或者是否有其他标准更好的方法来满足此要求?稳定加载器? pig ?

也许修改一列所有存在的表是常见的要求,所以可能存在于标准解决方案中。

无论我们最终选择哪种方式,迁移数据时,在过去的旧数据迁移期间如何解决新数据迁移问题。
换句话说,如何解决增加的数据迁移问题?

期待你的重播

表格1
userid(pk) 姓名 性别

表2
电话号码(pk) 用户名

最佳答案

我不完全清楚你要做什么,但你可能想看看使用 spark-cassandra 连接器来使用 Spark 做这些转换。

使用连接器,您可以将整个表读入 spark RDD,对这些 RDD 中的字段进行连接和转换,然后将生成的 RDD 保存回 Cassandra。因此,对于您所描述的内容,您大致执行以下步骤:

  • 将 table1 和 table2 读入 RDD1 和 RDD2
  • 可能在 RDD1 和 RDD2 之间对用户 ID 进行连接以创建 RDD3
  • 转换 userid 字段以及您想要更改的任何其他内容
  • 在 Cassandra 中创建任何你想作为主键的表
  • 将转换后的 RDD 保存到 Cassandra 中的新表

  • 这种方法可以很好地扩展到数百万条记录,因为如果没有足够的系统内存来同时将所有内容保存在内存中,Spark 旨在以块的形式处理数据。 Spark 将能够同时在所有节点上并行执行大量工作,而不是您编写 CQL 客户端来获取所有记录并在单个客户端机器上完成所有这些工作。

    困难的部分是将 Spark 添加到您的 Cassandra 集群并学习如何编写 Spark 作业,但如果这是您经常做的事情,那么麻烦可能是值得的。

    关于cassandra - 如何在cassandra中进行数据迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34014945/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com