java 热词推荐搜索实现,Flink 热词统计(1): 基础功能实现

本文介绍了如何使用 Flink 实现Java热词推荐搜索的统计功能,通过Scala语言编写,详细阐述了数据格式定义、离线数据模拟、统计计算过程,包括keyBy和sum操作,并探讨了实时流式计算的特点和Window的使用场景。
摘要由CSDN通过智能技术生成

本系列文章将从热词统计需求讲起,讲解flink在实际项目中的应用、部署、容错。项目中的代码为scala所编写,没有用 java 的原因是scala语言看起来更加简练,同时与java语言的兼容性较好,可以直接引用java中的类。

定义数据格式

本篇文章会讲述热词统计最核心的一个功能实现,即消息传递过来的是搜索的单词,程序中进行统计。基于此我们定义传递的数据格式为 ${timestamp},${word} ,之所以有timestamp是为了标注搜索时间,用于修正flink中的watermask

离线数据模拟

定义好了数据格式之后,我们可以将其转换为scala中的Tuple,这里我们先利用fromElements api 创建离线数据用于调试

val currentTimeStamp = System.currentTimeMillis()

val dataStream = env.fromElements(

(currentTimeStamp,"word1"),

(currentTimeStamp+1,"word2"),

(currentTimeStamp+2,"word1"),

(currentTimeStamp+3,"word3"),

)

复制代码

具体计算

我们要实现统计的功能,即求和,需要flink中的sum这个operator,通过[flink-1.8文档/操作符]发现,只有keyedStream这个对象才有sum方法,所以在执行sum之前得先调用keyBy方法将dataStream转换为keyedStream。接下来是这两个方法具体的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值