分享

sparkstreaming 读取kafka日志数据,如何根据日志时间进行统计

sparkstreaming 读取kafka日志数据,窗口处理为1分钟,日志数据自带时间戳,想根据日志时间戳进行分钟级别的数据统计,这个怎么支持实现?structed streaming 支持event Time,但是怎么让sparkstreaming 实现这种统计呢?
比如日志数据如下:
日志数据为id+request_time
想要根据kafka日志数据里面的request_time进行统计,但是日志数据传到sparkstreaming后的process_time肯定大于日志数据里面的时间,sparkstreaming接收过来的1分钟的窗口数据里面的日志数据跨分钟级别了

已有(7)人评论

跳转到指定楼层
s060403072 发表于 2019-7-30 07:21:33

下面方法仅供参考:
1.把request_time记录下来作为字段,然后排序。
2.修改spark streaming源码
3.使用struct streaming
回复

使用道具 举报

iot-lee 发表于 2019-7-30 09:53:25
s060403072 发表于 2019-7-30 07:21
下面方法仅供参考:
1.把request_time记录下来作为字段,然后排序。
2.修改spark streaming源码

如果是request_time作为key的话,假如日志数据为10:01的,还是有可能跨多个窗口的,怎么保证排序后统计呢?可以详细指导下吗
回复

使用道具 举报

s060403072 发表于 2019-7-30 10:05:23
iot-lee 发表于 2019-7-30 09:53
如果是request_time作为key的话,假如日志数据为10:01的,还是有可能跨多个窗口的,怎么保证排序后统计 ...

只能窗口内统计,如果非窗口内,那么比如迟到事件等,这也是没法统计的。

回复

使用道具 举报

iot-lee 发表于 2019-7-30 10:08:26
s060403072 发表于 2019-7-30 10:05
只能窗口内统计,如果非窗口内,那么比如迟到事件等,这也是没法统计的。

sparkstreaming不是支持水印吗?这种针对根据日志里包含时间戳的消息,只能用structstream去做吗?滑动窗口实现不了跨分钟级别的日志数据的统计吗?

点评

水印是struct streaming的功能。  发表于 2019-7-30 10:10
回复

使用道具 举报

若无梦何远方 发表于 2019-8-29 20:53:26
你的事件发生时,给个EventTime(yyyyMMddHHmmss),然后你Streaming处理数据时,将数据的EventTime时间拿出来,根据现在的时间-EventTime时间不就Ok了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条