Kinesis GetShardIterator...无效,因为它不是来自此流

Sam*_*Sam 5 emr amazon-kinesis

我在https://spark.apache.org/docs/1.2.0/streaming-kinesis-integration.html上构建了 KCL 加 Spark 基础

我在 EMR 上运行它(通过 bootstrap 安装 Spark)。我已经在流 SparkTest 上创建并进行了测试,其工作正常。我观察到没有创建 DynamoDB。我已经删除了stream和cluster。第二天,我再次创建了同名的 Kinesis Steam,并使用新启动的集群部署了我的代码。现在我得到了

5/06/12 08:17:28 ERROR worker.InitializeTask: Caught exception:
com.amazonaws.services.kinesis.model.InvalidArgumentException: StartingSequenceNumber 49551532098093284204238000035066183240246145871536717826 used in GetShardIterator on shard shardId-000000000000 in stream sparkTest under account 618673372431 is invalid because it did not come from this stream. (Service: AmazonKinesis; Status Code: 400; Error Code: InvalidArgumentException; Request ID: 770ef875-10db-11e5-b24b-af6f372168ae)
        at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1078)
        at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:726)
        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:461)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClie
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么会这样。如果我创建新的运动流然后进行工作,它会再次工作。是 Kinesis 的问题吗?

还有一个线程是使用https://github.com/awslabs/amazon-kinesis-connectors/issues/8进行的 ,但是我没有使用 kinesis 应用程序名称并使用以下命令创建流

KinesisUtils.createStream(
                        jssc, streamName, endpointUrl, kinesisCheckpointInterval, InitialPositionInStream.LATEST, StorageLevel.MEMORY_AND_DISK_2())
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 4

SparkConf sparkConfig = new SparkConf().setAppName("arbitraryName").setMaster("local[2]");

KinesisUtils.createStream(
                        jssc, streamName, endpointUrl, kinesisCheckpointInterval, InitialPositionInStream.LATEST, StorageLevel.MEMORY_AND_DISK_2()));
Run Code Online (Sandbox Code Playgroud)

如果我更改名称“任意名称”。效果很好。我从https://spark.apache.org/docs/1.2.0/streaming-kinesis-integration.html找到了这个提示

key points:
The application name used in the streaming context becomes the Kinesis application name
The application name must be unique for a given account and region.
Run Code Online (Sandbox Code Playgroud)