Apache spark 火花流+运动:违反接收器最大速率

Apache spark 火花流+运动:违反接收器最大速率,apache-spark,spark-streaming,amazon-kinesis,Apache Spark,Spark Streaming,Amazon Kinesis,我打电话给spark submit passing maxRate,我有一个kinesis接收器和一批1 spark submit-conf spark.streaming.receiver.maxRate=10 但是,单个批次可能会大大超过既定的最大速率。i、 e:我有300张唱片 我是否缺少任何设置?我觉得这好像是个bug。在代码中到处乱翻,看起来Kinesis完全忽略了spark.streaming.receiver.maxRate配置 如果查看kinisReceiver.onStart内

我打电话给spark submit passing maxRate,我有一个kinesis接收器和一批1

spark submit-conf spark.streaming.receiver.maxRate=10

但是,单个批次可能会大大超过既定的最大速率。i、 e:我有300张唱片


我是否缺少任何设置?

我觉得这好像是个bug。在代码中到处乱翻,看起来Kinesis完全忽略了spark.streaming.receiver.maxRate配置

如果查看kinisReceiver.onStart内部,您会看到:

val kinesisClientLibConfiguration =
  new KinesisClientLibConfiguration(checkpointAppName, streamName, awsCredProvider, workerId)
  .withKinesisEndpoint(endpointUrl)
  .withInitialPositionInStream(initialPositionInStream)
  .withTaskBackoffTimeMillis(500)
  .withRegionName(regionName)
此构造函数最终调用另一个构造函数,该构造函数具有许多配置的默认值:

public KinesisClientLibConfiguration(String applicationName,
        String streamName,
        AWSCredentialsProvider kinesisCredentialsProvider,
        AWSCredentialsProvider dynamoDBCredentialsProvider,
        AWSCredentialsProvider cloudWatchCredentialsProvider,
        String workerId) {
    this(applicationName, streamName, null, DEFAULT_INITIAL_POSITION_IN_STREAM, kinesisCredentialsProvider,
            dynamoDBCredentialsProvider, cloudWatchCredentialsProvider, DEFAULT_FAILOVER_TIME_MILLIS, workerId,
            DEFAULT_MAX_RECORDS, DEFAULT_IDLETIME_BETWEEN_READS_MILLIS,
            DEFAULT_DONT_CALL_PROCESS_RECORDS_FOR_EMPTY_RECORD_LIST, DEFAULT_PARENT_SHARD_POLL_INTERVAL_MILLIS,
            DEFAULT_SHARD_SYNC_INTERVAL_MILLIS, DEFAULT_CLEANUP_LEASES_UPON_SHARDS_COMPLETION,
            new ClientConfiguration(), new ClientConfiguration(), new ClientConfiguration(),
            DEFAULT_TASK_BACKOFF_TIME_MILLIS, DEFAULT_METRICS_BUFFER_TIME_MILLIS, DEFAULT_METRICS_MAX_QUEUE_SIZE,
            DEFAULT_VALIDATE_SEQUENCE_NUMBER_BEFORE_CHECKPOINTING, null);
}
您关心的是默认的_MAX_记录,它经常设置为10000条记录。在KinesisClientLibConfiguration上有一个名为withMaxRecords的方法,您可以调用该方法来设置实际记录数。这应该是一个容易解决的问题

但就目前而言,动觉接收器似乎不考虑该参数。

供将来参考

这是已知的Spark 2.2.0版本中的固定版本