Flink(flink是干嘛的)

  本篇文章为你整理了Flink(flink是干嘛的)的详细内容,包含有flink和spark的区别 flink是干嘛的 flink cdc flink面试题 Flink,希望能帮助你了解 Flink。

  案例来源 https://github.com/apache/flink-training/blob/release-1.14/hourly-tips/README_zh.md

  基于出租车付费事件流计算出每小时赚取最多小费的司机,最简单的方法是通过两个步骤来解决这个问题:首先使用一个小时长的窗口来计算每个司机在一小时内的总小费,然后从该窗口结果流中找到每小时总小费最多的司机。

  结果输出:
 

  每小时产生一个 HourlyTip对象 记录的数据流。 这个记录应包含该小时结束时的时间戳、 该小时内获得小费最多的司机的 driverId 以及他的实际小费总数。

  

public class HourlyTip {

 

   * 小时结束时的时间戳

   private Long eventTime;

   * 司机id driverId

   private Long driverId;

   * 该小时获得的小费总数

   private Float tips;

  

 

  

 // 初始化环境

 

   StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

   // 定义出租车-车费数据源

   KafkaSource TaxiFare fareSource = KafkaSource. TaxiFare builder()

   .setBootstrapServers("192.168.0.192:9092")

   .setTopics("TOPIC_FARE")

   .setGroupId("TEST_GROUP")

   .setClientIdPrefix("fare") // 避免kafka clientId重复

   .setStartingOffsets(OffsetsInitializer.latest())

   .setValueOnlyDeserializer(new TaxiFareDeserialization())

   .build();

   DataStreamSource TaxiFare fareStream = env.fromSource(fareSource, WatermarkStrategy. TaxiFare forMonotonousTimestamps().withTimestampAssigner((fare, t) - fare.getStartTime()), "fare source");

   // 按司机分组,对每小时内的数据进行统计,求出每个司机每小时的总小费

   SingleOutputStreamOperator HourlyTip hourlyTipsStream = fareStream.keyBy(TaxiFare::getDriverId)

   .window(TumblingEventTimeWindows.of(Time.hours(1)))

   .process(new AddTipsFunction());

  
* keyBy后数据分流,window是把不同的key分开聚合成窗口

   * 而windowAll是把所有的key都聚合起来,所以windowAll的并行度只能为1,而window可以有多个并行度

  
// 把所有key汇总起来,找出每个小时总小费最多的司机

   SingleOutputStreamOperator HourlyTip hourlyMaxStream = hourlyTipsStream.windowAll(TumblingEventTimeWindows.of(Time.hours(1))).max("tips");

  以上就是Flink(flink是干嘛的)的详细内容,想要了解更多 Flink的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: