这里的文件列表就是在server.properties中配置的
![](https://img.haomeiwen.com/i13947662/94a851da10a5537c.png)
下图就是kafka中,消息数据存放的文件,其中log文件里存放的是消息内容。其中******5059.log或者******5059.index其中5059就是文件中消息开始的offset。
![](https://img.haomeiwen.com/i13947662/021eca823dcd39eb.png)
我测试了一下,第一个样例是从offset为0的位置开始读取计算
![](https://img.haomeiwen.com/i13947662/9ea2e08b61f9c609.png)
(2019-06-27_ZFB,171)
(2019-06-22_WX,543)
(2019-06-25_ZFB,63)
(2019-06-26_WX,1066)
(2019-06-24_WX,83)
(2019-06-28_WX,222)
(2019-06-24_ZFB,15)
(2019-06-27_WX,1468)
(2019-07-01_WX,136)
(2019-07-03_WX,227)
另一个是从offset为5059的位置开始读取计算
![](https://img.haomeiwen.com/i13947662/69bf9c7afc576670.jpg)
(2019-07-01_WX,136)
(2019-07-03_WX,227)
(2019-07-03_ZFB,3)
(2019-07-04_WX,27)
(2019-07-01_ZFB,26)
(2019-07-02_WX,460)
其中不难发现,2019-07-01和2019-07-03有交集。
这样根据offset分析数据的方式,目的是为了减少Spark Streaming每次分析的数据量。如果一旦加上去kafka,他的数据会一直增加,如果一直从offset为0的位置开始读取和分析,就会干很多无用的分析任务。所以这种根据offset读取部分数据的机制,还是很有必要的。
网友评论