【发布时间】:2016-12-08 10:32:37
【问题描述】:
我正在使用 Kinesis Stream 提供 Spark 流。 我的项目是使用1s批次, 在第一批期间(队列包含几百万个项目,并且任务被告知从流的开头开始) 火花流开始消耗 10K 记录的批次。 这种情况每 10/20 秒发生一次。
即:
t0 -> records : 0
t1 -> records : 0
.....
t10 -> records: 10.000 -> total process time is 0.8s (lower than batch time)
t11 -> recods : 0
..
t15 ->records : 0
..
t20 -> records: 10.000
这种行为会一直发生,直到火花到达流的顶部。在 htat 之后,每批都会每秒处理一次元素。
感觉就像在开始时它应该始终如一地处理每批记录的数量,而不是让 htat high number of batches 处理没有记录。
我忽略了任何设置?所描述的行为是预期的吗?
【问题讨论】:
-
您的记录是否经常流入?目前尚不清楚您是如何从您的问题中收到这些信息的。
-
@YuvalItzchakov 我设置了 1s 个批次,所附图片应该回答你的问题(?)有一个 kinesis 接收器
-
您的图片没有回答我的问题。您说感觉就像在开始时它应该始终如一地处理每批记录的数量,而没有大量的批次处理没有记录。但它不像 Spark Streaming 那样工作。如果您一次发送一批 10000 条消息,并且接收者看到它们并且没有设置 限制,它会将它们全部消耗掉。
-
知道了,当 spark 启动时:(i)。该流包含几百万个项目(ii)。 Spark 被告知从 hte 流的开头开始(我通过删除运动表中的条目来强制执行此操作)(ii)火花开始消耗 10K 的批次,但不是连续的,而是在(10/20 秒)的空间中希望解释有道理
-
Kinesis 的开始 (TRIM_HORIZON) 位置可能存在问题。另外,您的流中有多少个分片?
标签: spark-streaming amazon-kinesis