Flink在大数据流处理方面的注意事项

本文详细列举了使用Flink进行大数据流处理时需要注意的六个关键点,包括导入必要的库、时间戳处理、隐式类型转换、水印策略、懒加载以及Scala中的循环处理。此外,还探讨了如何优化连续事件触发的场景,避免无用功,并提供了代码实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

仅作笔记

文章目录

import org.apache.flink.api.common.state.{
   ListState, ListStateDescriptor}
import org.apache.flink.api.java.tuple.Tuple
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.TimeCharacteristic
import org.apache.flink.streaming.api.functions.KeyedProcessFunction
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.util.Collector

import scala.collection.mutable.ListBuffer
 /**
 * 恶意登录监控
   1.基本需求
        用户在短时间内频繁登录失败,有程序恶意攻击的可能
        同一用户(可以是不同IP)在2秒内连续两次登录失败,需要报警
    2.解决思路
        将用户的登录失败行为存入ListState,设定定时器2秒后触发,查看ListState中有几次失败登录
        更加精确的检测,可以使用CEP库实现事件流的模式匹配
 * @return ${return}
 * @author fujiwen
 */
object LoginFail {
   
        def main(args: Array[String]): Unit = {
   
        		//注意事项1
                val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
                //注意事项2
                env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
                env.setParallelism(1)
        		//注意事项3
                env.fromCollection(List(
                        LoginEvent(1, "192.168.0.1", "fail", 1558430842),
                        LoginEvent(1, "192.168.0.2", "fail", 1558430843),
                        LoginEvent(1, "192.168.0.3", "fail", 1558430844),
                        LoginEvent(1, "192.168.0.1", "fail", 1558430845),
                        LoginEvent(1, "192.168.0.2", "fail", 1558430846),
                        LoginEvent(1, "192.168.0.3", "fail", 1558430847),
                        LoginEvent(1, "192.168.0.1", "fail", 1558430848),
                        LoginEvent(1, "192.168.0.2", "fail", 1558430849),
                        LoginEvent(1, "192.168.0.3", "fail", 1558430888),
                        LoginEvent(2, "192.168.10.10", "success", 1558430845)
                )).assignAscendingTimestamps(_.eventTime *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值