我已经经历过this stackoverflow问题,根据答案,它会在批处理间隔中创建一个只有一个DStream
的RDD
。
例如:
我的批处理间隔为1分钟,Spark Streaming作业正在使用Kafka Topic中的数据。
我的问题是,DStream中可用的RDD是否会拉/包含最后一分钟的全部数据?我们是否需要设置任何标准或选项以提取最近一分钟创建的所有数据?
如果我有一个带有3个分区的Kafka主题,并且所有3个分区都包含最后一分钟的数据,那么DStream是否会在所有Kafka主题分区中提取/包含最后一分钟创建的所有数据?
更新:
在哪种情况下,DStream包含多个RDD?
最佳答案
Spark Streaming DStream正在使用来自Kafka主题的数据,该主题已分区,例如到3个不同的Kafka代理上的3个分区。
DStream中可用的RDD是否提取/包含最后一分钟的全部数据?
不完全的。 RDD仅描述了将任务提交执行时从中读取数据的偏移量。就像Spark中的其他RDD一样,它们只是(?)描述了在提交任务时该做什么以及在何处查找要工作的数据。
但是,如果您以更宽松的方式使用“拉/包含”来表示在某个点上将处理记录(来自给定偏移量的分区),是的,您是对的,整个分钟都映射到了偏移量然后将偏移量映射到Kafka移交给处理的记录。
在所有Kafka主题分区中?
是。 Kafka不一定需要Spark Streaming / DStream / RDD来处理它。从最后一次查询到现在,DStream的RDD从每个偏移量获取主题及其分区的记录。
对于Kafka,Spark Streaming的分钟可能略有不同,因为DStream的RDD包含偏移量的记录而不是每次记录。
在哪种情况下DStream包含多个RDD?
决不。