我需要在AWS Kinesis Firehose中暂停流的能力。
当我需要执行需要重新创建表(例如更改排序键)的模式更改时,我需要它。
这些更改通常需要创建一个新表,将行插入到新表中,然后删除原始表并将新表重命名为原始名称。 这样做会导致在此过程中流传输的行丢失。
我可以想到两种解决方法:
1. 在过程开始时重命名原始表,然后强制firehose失败,并重试直到您进行更改并将其重新命名回来。 我不确定重试机制是否足够强大以实现此目的。 2. 在负载之间定义几小时的时间间隔(根据需要),然后监视“COPY”查询,并在COPY之后立即执行与#1相同的操作。 这比#1更加安全。
这两种解决方案都没有达到最佳实践的水平。
有更好的解决方案吗?我的解决方案有多可靠?
当我需要执行需要重新创建表(例如更改排序键)的模式更改时,我需要它。
这些更改通常需要创建一个新表,将行插入到新表中,然后删除原始表并将新表重命名为原始名称。 这样做会导致在此过程中流传输的行丢失。
我可以想到两种解决方法:
1. 在过程开始时重命名原始表,然后强制firehose失败,并重试直到您进行更改并将其重新命名回来。 我不确定重试机制是否足够强大以实现此目的。 2. 在负载之间定义几小时的时间间隔(根据需要),然后监视“COPY”查询,并在COPY之后立即执行与#1相同的操作。 这比#1更加安全。
这两种解决方案都没有达到最佳实践的水平。
有更好的解决方案吗?我的解决方案有多可靠?