You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Amazon Keyspaces中迁移表数据?100G大表子集迁移最佳实践咨询

Amazon Keyspaces表间迁移与大表子集数据迁移最佳实践

1. 表间数据迁移方法

直接使用CQL INSERT...SELECT

这是最轻量化的方案,无需中间存储介质,直接通过CQL语句完成迁移。只要目标表字段与源表匹配(或字段对应),即可执行:

INSERT INTO target_keyspace.target_table (col1, col2, col3)
SELECT col1, col2, col3
FROM source_keyspace.source_table;

针对大表,避免单次执行超时,可通过TOKEN()函数分片+LIMIT分批执行:

INSERT INTO target_keyspace.target_table (col1, col2, col3)
SELECT col1, col2, col3
FROM source_keyspace.source_table
WHERE token(col1) > token('last_processed_value')
LIMIT 1000;

可以编写简单脚本(如Python的cassandra-driver)自动遍历所有分片,完成全量迁移。

AWS Glue无服务器迁移

利用Glue的爬虫自动识别Keyspaces表结构,创建ETL作业直接从源表读取数据并写入目标表。全程无需本地或中间文件,可配置作业并行度优化迁移速度,Glue会自动处理重试与故障恢复,适合大规模表的迁移场景。

2. 100G大表子集数据迁移最佳实践

分片式带过滤条件的INSERT...SELECT

先明确子集的过滤规则(如时间范围、特定分区键值),结合TOKEN()分片分批执行迁移,避免单次查询压力过大:

INSERT INTO target_keyspace.target_subset_table (user_id, order_id, order_date)
SELECT user_id, order_id, order_date
FROM source_keyspace.large_table
WHERE token(user_id) BETWEEN token('start_token') AND token('end_token')
  AND order_date >= '2023-01-01' -- 自定义子集过滤条件
LIMIT 5000;

通过脚本循环执行上述语句,逐步覆盖所有符合条件的数据分片,完成子集迁移。

Spark直接读写Keyspaces(无需中间CSV)

Spark可直接连接Keyspaces作为数据源,无需依赖CSV中间文件。配置Spark Cassandra连接器后,直接读取子集数据并写入目标表:
示例Scala代码:

import org.apache.spark.sql.cassandra._

val spark = org.apache.spark.sql.SparkSession.builder
  .appName("KeyspacesSubsetMigration")
  .config("spark.cassandra.connection.host", "cassandra.us-east-1.amazonaws.com")
  .config("spark.cassandra.connection.port", "9142")
  .config("spark.cassandra.auth.username", "your_username")
  .config("spark.cassandra.auth.password", "your_password")
  .config("spark.cassandra.connection.ssl.enabled", "true")
  .getOrCreate()

// 读取符合条件的子集数据
val subsetDF = spark.read
  .format("org.apache.spark.sql.cassandra")
  .options(Map("table" -> "large_table", "keyspace" -> "source_keyspace"))
  .load()
  .filter("order_date >= '2023-01-01'")

// 写入目标表
subsetDF.write
  .format("org.apache.spark.sql.cassandra")
  .options(Map("table" -> "target_subset_table", "keyspace" -> "target_keyspace"))
  .mode("append")
  .save()

Spark会自动并行处理数据,大幅提升大表子集的迁移效率,之前依赖CSV的问题大概率是未正确配置连接器导致。

AWS Glue子集ETL作业

在Glue ETL作业中添加过滤逻辑,仅读取符合条件的子集数据,直接写入目标表。可通过可视化编辑器或脚本模式配置,利用Glue的并行执行能力优化迁移速度,全程无中间文件,无需维护集群。

内容的提问来源于stack exchange,提问作者buffeppemmas-3826

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 04:22:05