官网:wiki消息实现timewindow的例子,及消息数据到kafka的例子

官网:wiki消息实现timewindow的例子,及消息数据到kafka的例子
位置:https://ci.apache.org/projects/flink/flink-docs-release-1.6/quickstart/run_example_quickstart.html

def main(args: Array[String]): Unit = {
val properties = new Properties()
    properties.setProperty("bootstrap.servers", "192.168.183.135:9092")
    properties.setProperty("zookeeper.connect", "192.168.183.135:2181")
    //properties.setProperty("group.id", "test")
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    println(StreamExecutionEnvironment.getDefaultLocalParallelism)
    env.setParallelism(1)
   // val wiki = new WikipediaEditsSource()
    val wikisource = env.addSource(new WikipediaEditsSource)    //由于该类是java代码,无法隐式转换为scala代码
    wikisource.keyBy(x=>{
      (x,x.getUser)
    })
      .timeWindow(Time.seconds(30))
      //fold 算子 中文翻译折叠:源码中解释:针对每个窗口的每个execution进行操作。实际是有点像[spark中的fold](参见 spark分类中的《spark RDD》),针对value值进行操作。
      //初始值,对每个key生效一次(此说法不准确,请纠正),value就是针对value值的一些加减乘除等操作
      .fold(("-----------",0L))((x,y)=>(y.getUser+x._1,x._2+y.getByteDiff))
      .map(x=>x.toString())
      /**输出到kafka中
        * kafka-topics.sh --zookeeper 192.168.183.135:2181 --topic wiki_test --replication-factor 1 --partitions 1 --create
        *
        * kafka-console-producer.sh --broker-list 192.168.183.135:9092 --topic wiki_test
        *
        * kafka-console-consumer.sh  --bootstrap-server 192.168.183.135:9092 --topic wiki_test --from-beginning
        */
        //.print()
      .addSink(new FlinkKafkaProducer010[String]("wiki_test",new SimpleStringSchema(),properties))
    /**
      * 结果样例:
      * (04:2D80:C004:91EA:ED9E:E08F:A475:1380-----------,0)
      * (Zackmann08-----------,0)
      * (Funkymonkeyinthesun-----------,-1)
      * (Mzaru1-----------,947)
      * (Bot1058-----------,3)
      * (HBC AIV helperbot5-----------,-268)
      * (Colton Meltzer-----------,204)
      * (2.15.64.170-----------,2)
      * (SQLBot-----------,-182)
      */
    env.execute("wikiTest")
  }

你可能感兴趣的:(flink)