1、项目介绍
由于上一个文档已经介绍了这个项目名。这里我就单独介绍一下这个文档主类。该文档主要是数据的主入口。同时也是可以熟悉整个代码的处理流程。
1、用户的操作日志数据(埋点数据),发送至kafka 。
2、运营人员在大数据平台配置好规则(如新用户,浏览了某一个页面…),存入mysql。
3、Flink代码定时(新增规则也能及时加载)加载mysql规则,根据规则处理日志。
4、将满足规则的数据存入ES(clickhouse)中。
5、Flink同时在根据mysql定义的规则处理数据(如新用户,浏览…),同时需要结合ES(clickhouse)查询。将满足要求的用户打上标签(特定规则有特定的标签)存入hbase中。
6、搭建API接口,开放给其他平台使用。
7、整个流程就是加载规则和处理规则,存入满足规则的用户,打上标签。
2、主类流程图
先不扯其他的,代码先上。后面在详细介绍。
3、主类代码
代码
package com.task
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.TimeUnit
import com.bean.{
BuriedPointDetailBean, UserLastTimeBean}
import com.conf.Constants.{
ENV, PARALLELISM, baseConf}
import com.conf.{
BaseConf, Constants, LocalConf, OnlineConf, TestConf}
import com.func.{
BroadcastProcessFunc, BroadcastProcessRuleFunc, ElasticsearchSinkFunc, HbaseSinkFunc, MysqlSourceFunc, ProcessETLWindowFunc}
import com.utils.StringUtils
import org.apache.flink.api.common.restartstrategy.RestartStrategies
import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.api.common.state.MapStateDescriptor
import org.apache.flink.api.java.utils.ParameterTool
import org.apache.flink.runtime.state.filesystem.FsStateBackend
import org.apache.flink.streaming.api.datastream.BroadcastStream
import org.apache.flink.streaming.api.{
CheckpointingMode, TimeCharacteristic}
import org.apache.flink.streaming.api.environment.CheckpointConfig
import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor
import org.apache.flink.streaming.api.scala.function.ProcessWindowFunction
import org.apache.flink.streaming.api.scala.{
DataStream, StreamExecutionEnvironment, WindowedStream, createTypeInformation}
import org.apache.flink.streaming.api.windowing.assigners