Spark streaming 父碎片存在,但子碎片不存在

Spark streaming 父碎片存在,但子碎片不存在,spark-streaming,amazon-kinesis,Spark Streaming,Amazon Kinesis,我正在使用Kinesis设置Spark流项目,当我尝试连接到我的Kinesis流时,Spark出现以下错误: ERROR ShardSyncTask: Caught exception while sync'ing Kinesis shards and leases com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.KinesisClientLibIOException: Parent shard shardId-0

我正在使用Kinesis设置Spark流项目,当我尝试连接到我的Kinesis流时,Spark出现以下错误:

ERROR ShardSyncTask: Caught exception while sync'ing Kinesis shards and leases
com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.KinesisClientLibIOException: Parent shard shardId-000000000000 exists but not the child shard shardId-000000000002
当我将测试数据发布到此流或使用基本Amazon库从流中读取数据时,我没有收到任何错误,这仅在我尝试连接Spark时发生

以下是我在测试中使用的代码:

val conf = new SparkConf().setMaster("local[2]").setAppName("KinesisCounter")
val ssc = new StreamingContext(conf, Seconds(1))
val rawStream = KinesisUtils.createStream(ssc, "dev-test", "kinesis.us-east-1.amazonaws.com", Duration(1000), InitialPositionInStream.TRIM_HORIZON, StorageLevel.MEMORY_ONLY)
rawStream.map(msg => new String(msg)).count.print

你有多少个关于动情的碎片

我要做的是:

  • 检查运动区域,确保应用程序设置和流位于同一区域
  • 删除存储Kinesis流碎片的DynomoTable,然后重新开始。以下资料来自:
  • 在某些情况下,更改应用程序名称或流名称可能会导致Kinesis错误。如果看到错误,可能需要手动删除DynamoDB表

  • 检查应用程序代码,查看在代码运行期间是否设置了某些设置

  • 希望有帮助。

    谢谢,我想是DynamoDB桌。经过一番挖掘,我注意到它只存储了碎片信息,没有数据将碎片信息与特定流相关联,因此当我创建新流时,应用程序仍在尝试使用旧流的碎片配置数据。