Viv*_*oel 4 amazon-emr emr amazon-dynamodb amazon-data-pipeline data-pipeline
我有一个用例,需要将 ttl 列添加到现有表中。目前,该表拥有超过20亿条记录。
是否有任何现有的解决方案围绕相同的构建?或者应该是 emr 是前进的道路吗?
DynamoDB 不支持跨越主键边界的更新操作。对于读取数据,唯一跨越分区边界的操作是扫描。
因此,不幸的是,向表中的所有项目添加属性(DynamoDB 是文档数据库,因此不存在列这样的概念)的唯一方法是实际为每个项目执行 Put。
如果您的表中有大约 20 亿个项目,那么写入次数将达到 20 亿次。
当然,您可以使用 EMR 和 Hive 连接到表并执行 SQL 式更新来添加 TTL 属性,但它仍然会转化为 20 亿个单独的 PutItem 请求,因此运行起来要么需要一段时间,要么成本相当高。
如果您想要添加 TTL 的原因是因为您试图删除表中的大量项目,也许更好的方法是创建一个新表,使用 TTl 和所有内容复制您需要的记录,然后删除旧表。
| 归档时间: |
|
| 查看次数: |
4129 次 |
| 最近记录: |