当前位置: 首页 > 知识库问答 >
问题:

Dynamodb流运动-在之间找到不完整的哈希范围

毋玺
2023-03-14

我有DynamoDB的运动流。我正在通过aws KCL sdk v1.14.0进行处理。我看到下面日志中偶尔出现错误。我还注意到,对于dynamodb租约表中的所有碎片,startingHashKey始终为1,endingHashKey为0。有什么线索吗?

Incomplete hash range found between {
  "leaseKey" : "shardId-00000001601992582645-697387df",
  "leaseOwner" : "eu01-stg01-vendor-service-74b4cd66b6-6hcfb:29dafc2f-c87f-4c70-b210-d38db7ebfc87",
  "leaseCounter" : 4080,
  "concurrencyToken" : null,
  "lastCounterIncrementNanos" : null,
  "checkpoint" : {
    "sequenceNumber" : "47515300000000010794885359",
    "subSequenceNumber" : 0,
    "shardEnd" : false
  },
  "pendingCheckpoint" : null,
  "ownerSwitchesSinceCheckpoint" : 0,
  "parentShardIds" : [ ],
  "childShardIds" : [ ],
  "hashKeyRange" : {
    "startingHashKey" : 0,
    "endingHashKey" : 1
  }
} and {
  "leaseKey" : "shardId-00000001602005637902-6358a08a",
  "leaseOwner" : "eu01-stg01-vendor-service-74b4cd66b6-6hcfb:29dafc2f-c87f-4c70-b210-d38db7ebfc87",
  "leaseCounter" : 397,
  "concurrencyToken" : null,
  "lastCounterIncrementNanos" : null,
  "checkpoint" : {
    "sequenceNumber" : "TRIM_HORIZON",
    "subSequenceNumber" : 0,
    "shardEnd" : false
  },
  "pendingCheckpoint" : null,
  "ownerSwitchesSinceCheckpoint" : 0,
  "parentShardIds" : [ "shardId-00000001601992582736-2c3fc0ff" ],
  "childShardIds" : [ ],
  "hashKeyRange" : {
    "startingHashKey" : 0,
    "endingHashKey" : 1
  }
}

共有1个答案

申屠涛
2023-03-14

我也得到这个错误,但流似乎正常工作。(我用它来监控数据变化)。

然后我挖掘这个错误html" target="_blank">日志的源代码,发现零件代码是在2020年6月22日添加的,

这是源代码:https://github.com/awslabs/amazon-kinesis-client/blob/6fbfc21ad7d6a2722491806a411d168304167f7f/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PeriodicShardSyncManager.java#L298

这是罪魁祸首:https://github.com/awslabs/amazon-kinesis-client/blame/6fbfc21ad7d6a2722491806a411d168304167f7f/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PeriodicShardSyncManager.java#L298

这是提交:https://github.com/awslabs/amazon-kinesis-client/commit/3a88a60a4ee7bb8f969b36cb79e7665a7395b6ec

它仅在最新版本中:1.14.0

所以我回到一个版本使用1.13.3然后没有这个错误。

我在GitHub上提交了一个问题,以了解错误的原因。https://github.com/awslabs/amazon-kinesis-client/issues/758

 类似资料:
  • 我有一张dynamodb桌子。 它有主分区键IdType(String)和主排序键Id(String) 由于它是哈希范围模式,IdType不是唯一的,一个键可以多次使用。我需要找到所有唯一的ID类型。 我们如何找到它?一种可能的解决方案是使用扫描和处理所有客户端来获取所有IdType,并使用我们自己的代码找到唯一的。但扫描成本很高,每次扫描只能扫描1MB的数据,因此扫描是不可行的,因为表中的数据已

  • 下面是我的用例:我有一个带有哈希+范围键的Dynamo表。当我将新项放入表中时,我希望进行唯一性检查。有时我想保证哈希是唯一的(忽略范围)。其他时候,我希望允许重复的哈希值,但要保证哈希值和范围的组合是唯一的。我怎样才能做到这一点? 我试验了attribute_not_exists。它似乎可以处理第二种情况,即检查哈希+组合键。下面是一个PHP示例: 知道如何处理我只想检查唯一性的情况吗?

  • 我必须经常在那里做两件事:1。给定一个category#域,获取所有匹配项。2.给定grouptype#groupname,获取所有匹配项。 这两种操作都相当频繁,所以我不想使用扫描。在DynamoDB中有没有一种有效的方法可以做到这一点?是否有更好的方法来设计模式(更多的表、辅助索引等)?任何建议都是有帮助的。有人建议使用全局辅助索引,但我的问题是,我能否将主表的范围键作为GSI的哈希键?我知道

  • 我正在为我的data structures类创建自己的哈希表adt,遇到了一个问题。我使用以下函数对哈希表中的(key,value)项进行哈希(key是一个字符串,value可以是任何数据类型,它是通用的): 使用线性探测插入到表中可以很好地工作,但是,如果我选择扩展表,哈希(键)函数将无法充分用于哈希表的get(键)操作,因为容量已更改(在正确映射表扩展之前,它将映射到不正确的位置)。有没有什么

  • 问题内容: 我有一个dynamodb表来存储电子邮件属性信息。我在电子邮件上有一个哈希键,在时间戳(数字)上有范围键。使用电子邮件作为哈希键的最初想法是按电子邮件查询所有电子邮件。但是我想做的一件事是检索所有电子邮件ID(在哈希键中)。我为此使用了boto,但不确定如何检索不同的电子邮件ID。 我当前提取10,000条电子邮件记录的代码是 但是要检索不同的记录,我将必须进行全表扫描,然后在代码中选

  • 问题内容: 我不知道这是否可行,但我正在尝试制作一个Hashtable,其中Interval是一个具有2个整数/长值,一个起点和一个终点的类,我想做这样的事情: 因此,基本上我想要的是Interval对象中一系列值之间的键提供对应的WhateverObject。我知道我必须重写interval对象中的equals()和hashcode(),主要问题是我想以某种方式使100到200之间的所有值(在此