碎片[shardId-000000000000]未关闭。如果我们在reshard操作正在进行时构建了分片列表,就会发生这种情况

时间:2014-12-14 15:12:15

标签: amazon-kinesis

从Amazon kinesis Stream获取数据时出现此错误。 我正在做以下步骤

  1. 创造亚马逊运动蒸汽
  2. 使用putRecord的{​​{1}} api放置数据。
  3. 然后使用Worker Of KCL库从流中获取数据。

1 个答案:

答案 0 :(得分:8)

有几种可能性。

  1. 在您命令创建流后,您是否等待了足够长的时间才能完成?有时,可能需要10分钟才能创建分片。由于您设法使用putRecord方法,因此流和分片应处于活动状态。
  2. 您是否正确配置了DynamoDB?我假设您正在使用它进行Kinesis应用程序同步。请参阅DynamoDB表的记录内部。所有列(即,leaseKey,checkpoint,leaseOwner,parentShardId等)是否正确填充?也许数据库中的数据是旧的,所以你可能正在访问一个封闭的碎片?
  3. 您提到的例外情况如下:https://github.com/awslabs/amazon-kinesis-client/blob/master/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncer.java#L193

    尝试删除DynamoDB表,让Kinesis Application(KCL)创建一个全新的表。 链接:https://console.aws.amazon.com/dynamodb/