我有一个 AWS Kinesis 流,并在 Hive 中创建了一个指向它的外部表。然后,我为检查点创建一个 DynamoDB 表,并在我的 Hive 查询中设置以下属性,如下所述:
set kinesis.checkpoint.enabled=true;
set kinesis.checkpoint.metastore.table.name=my_dynamodb_table;
set kinesis.checkpoint.metastore.hash.key.name=HashKey;
set kinesis.checkpoint.metastore.range.key.name=RangeKey;
set kinesis.checkpoint.logical.name=my_logical_name;
set kinesis.checkpoint.iteration.no=0;
我有以下问题:
- 我总是必须从
iteration.no
设置为 0 开始吗? - 这是否总是从脚本的开头开始(即将被驱逐的最旧的 Kinesis 记录)?
- 想象一下,我设置了一个 cron 来安排脚本的执行,我如何检索“下一个”迭代次数?
- 要在相同的数据上重新执行脚本,以相同的执行号重新运行查询是否足够?
- 如果我一遍又一遍地执行
select * from kinesis_ext_table limit 100
withiteration.no=0
,一旦第一个 Kinesis 记录开始被驱逐,我会得到不同/奇怪的结果吗?
给定 DynamoDB 检查点条目:
{"startSeqNo":"1234",
"endSeqNo":"5678",
"closed":false}
- 字段的含义是什么
closed
? - 序列号是否递增并且开始和结束之间是否存在关系(例如:结束 - 开始 = 读取的记录数)?
- 我注意到有时只有 endSeqNum(没有 startSeqNum),我应该如何解释呢?
我知道这是很多问题,但我在文档中找不到这些答案。