Search in sources :

Example 1 with ApplicationStatKeySelector

use of com.navercorp.pinpoint.flink.function.ApplicationStatKeySelector in project pinpoint by naver.

the class StatStreamingVer2Job method start.

public void start(ParameterTool parameters) throws Exception {
    logger.info("start Aggregation Stat Data job with job parameter. : " + parameters.toMap());
    final Bootstrap bootstrap = Bootstrap.getInstance(parameters.toMap());
    // set data source
    final TcpSourceFunction tcpSourceFunction = bootstrap.getTcpSourceFunction();
    final StreamExecutionEnvironment env = bootstrap.createStreamExecutionEnvironment();
    env.getConfig().setGlobalJobParameters(parameters);
    DataStreamSource<RawData> rawData = env.addSource(tcpSourceFunction);
    // 0. generation rawdata
    final SingleOutputStreamOperator<Tuple3<String, JoinStatBo, Long>> statOperator = rawData.flatMap(bootstrap.getTbaseFlatMapper());
    // 1-1 save data processing application stat raw data
    final StatisticsDao statisticsDao = bootstrap.getStatisticsDao();
    DataStream<Tuple3<String, JoinStatBo, Long>> applicationStatAggregationData = statOperator.filter(new ApplicationStatBoFilter()).assignTimestampsAndWatermarks(WatermarkStrategy.<Tuple3<String, JoinStatBo, Long>>forMonotonousTimestamps().withTimestampAssigner(new AgentStatTimestampAssigner())).keyBy(new ApplicationStatKeySelector()).window(TumblingEventTimeWindows.of(Time.milliseconds(ApplicationStatBoWindow.WINDOW_SIZE))).allowedLateness(Time.milliseconds(ApplicationStatBoWindow.ALLOWED_LATENESS)).apply(new ApplicationStatBoWindow());
    applicationStatAggregationData.addSink(statisticsDao);
    // 1-2. aggregate application stat data
    // statOperator.filter(new FilterFunction<Tuple3<String, JoinStatBo, Long>>() {
    // @Override
    // public boolean filter(Tuple3<String, JoinStatBo, Long> value) throws Exception {
    // if (value.f1 instanceof JoinApplicationStatBo) {
    // logger.info("1-2 application stat aggre window function : " + value.f1);
    // return true;
    // }
    // 
    // return false;
    // }
    // })
    // .assignTimestampsAndWatermarks(new Timestamp())
    // .keyBy(0)
    // .window(TumblingEventTimeWindows.of(Time.seconds(120)))
    // .apply(new WindowFunction<Tuple3<String, JoinStatBo, Long>, Tuple3<String, JoinStatBo, Long>, Tuple, TimeWindow>() {
    // @Override
    // public void apply(Tuple tuple, TimeWindow window, Iterable<Tuple3<String, JoinStatBo, Long>> values, Collector<Tuple3<String, JoinStatBo, Long>> out) throws Exception {
    // try {
    // JoinApplicationStatBo joinApplicationStatBo = join(values);
    // logger.info("1-2 application stat aggre window function : " + joinApplicationStatBo);
    // out.collect(new Tuple3<>(joinApplicationStatBo.getId(), joinApplicationStatBo, joinApplicationStatBo.getTimestamp()));
    // } catch (Exception e) {
    // logger.error("window function error", e);
    // }
    // }
    // 
    // private JoinApplicationStatBo join(Iterable<Tuple3<String, JoinStatBo, Long>> values) {
    // List<JoinApplicationStatBo> joinApplicaitonStatBoList = new ArrayList<JoinApplicationStatBo>();
    // for (Tuple3<String, JoinStatBo, Long> value : values) {
    // joinApplicaitonStatBoList.add((JoinApplicationStatBo) value.f1);
    // }
    // return JoinApplicationStatBo.joinApplicationStatBo(joinApplicaitonStatBoList);
    // 
    // }
    // }).writeUsingOutputFormat(statisticsDao);
    // 2. agrregage agent stat
    // statOperator.filter(new FilterFunction<Tuple3<String, JoinStatBo, Long>>() {
    // @Override
    // public boolean filter(Tuple3<String, JoinStatBo, Long> value) throws Exception {
    // if (value.f1 instanceof JoinAgentStatBo) {
    // logger.info("2 application stat aggre window function : " + value.f1);
    // return true;
    // }
    // 
    // return false;
    // }
    // })
    // .assignTimestampsAndWatermarks(new Timestamp())
    // .keyBy(0)
    // .window(TumblingEventTimeWindows.of(Time.seconds(120)))
    // 
    // .apply(new WindowFunction<Tuple3<String, JoinStatBo, Long>, Tuple3<String, JoinStatBo, Long>, Tuple, TimeWindow>() {
    // 
    // @Override
    // public void apply(Tuple tuple, TimeWindow window, Iterable<Tuple3<String, JoinStatBo, Long>> values, Collector<Tuple3<String, JoinStatBo, Long>> out) throws Exception {
    // try {
    // JoinAgentStatBo joinAgentStatBo = join(values);
    // logger.info("2 agent stat aggre window function : " + joinAgentStatBo);
    // out.collect(new Tuple3<>(joinAgentStatBo.getId(), joinAgentStatBo, joinAgentStatBo.getTimestamp()));
    // } catch (Exception e) {
    // logger.error("window function error", e);
    // }
    // }
    // 
    // private JoinAgentStatBo join(Iterable<Tuple3<String, JoinStatBo, Long>> values) {
    // List<JoinAgentStatBo> joinAgentStatBoList =  new ArrayList<JoinAgentStatBo>();
    // for (Tuple3<String, JoinStatBo, Long> value : values) {
    // joinAgentStatBoList.add((JoinAgentStatBo) value.f1);
    // }
    // 
    // return JoinAgentStatBo.joinAgentStatBo(joinAgentStatBoList);
    // }
    // })
    // .writeUsingOutputFormat(statisticsDao);
    env.execute("Aggregation Stat Data");
}
Also used : TcpSourceFunction(com.navercorp.pinpoint.flink.receiver.TcpSourceFunction) RawData(com.navercorp.pinpoint.flink.vo.RawData) AgentStatTimestampAssigner(com.navercorp.pinpoint.flink.function.AgentStatTimestampAssigner) ApplicationStatBoWindow(com.navercorp.pinpoint.flink.function.ApplicationStatBoWindow) StatisticsDao(com.navercorp.pinpoint.flink.dao.hbase.StatisticsDao) ApplicationStatBoFilter(com.navercorp.pinpoint.flink.function.ApplicationStatBoFilter) ApplicationStatKeySelector(com.navercorp.pinpoint.flink.function.ApplicationStatKeySelector) Tuple3(org.apache.flink.api.java.tuple.Tuple3) StreamExecutionEnvironment(org.apache.flink.streaming.api.environment.StreamExecutionEnvironment)

Aggregations

StatisticsDao (com.navercorp.pinpoint.flink.dao.hbase.StatisticsDao)1 AgentStatTimestampAssigner (com.navercorp.pinpoint.flink.function.AgentStatTimestampAssigner)1 ApplicationStatBoFilter (com.navercorp.pinpoint.flink.function.ApplicationStatBoFilter)1 ApplicationStatBoWindow (com.navercorp.pinpoint.flink.function.ApplicationStatBoWindow)1 ApplicationStatKeySelector (com.navercorp.pinpoint.flink.function.ApplicationStatKeySelector)1 TcpSourceFunction (com.navercorp.pinpoint.flink.receiver.TcpSourceFunction)1 RawData (com.navercorp.pinpoint.flink.vo.RawData)1 Tuple3 (org.apache.flink.api.java.tuple.Tuple3)1 StreamExecutionEnvironment (org.apache.flink.streaming.api.environment.StreamExecutionEnvironment)1