news 2026/11/3 9:10:08

【wordcount】flink 代码快速入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【wordcount】flink 代码快速入门

文章目录

    • 1. 依赖
    • 2. 代码

1. 依赖

<dependencies><!-- 对于java版本的flink 使用 --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>${flink.version}</version><!-- <scope>provided</scope>--></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.12</artifactId><version>${flink.version}</version><!-- <scope>provided</scope>--></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-clients_2.12</artifactId><version>${flink.version}</version></dependency><!-- 针对于scala语言使用的 --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-scala_2.12</artifactId><version>${flink.version}</version><scope>provided</scope></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-scala_2.12</artifactId><version>${flink.version}</version><scope>provided</scope></dependency></dependencies>

2. 代码

  • 接收来自socket(nc -l 9001)的数据
  • 每两秒进行一次wc聚合
//envStreamExecutionEnvironmentenv=StreamExecutionEnvironment.getExecutionEnvironment();//source from socketDataStreamSource<String>text=env.socketTextStream("localhost",9001);//trans:SingleOutputStreamOperator<Tuple2<String,Integer>>wordCount=text.flatMap(newFlatMapFunction<String,String>(){publicvoidflatMap(Stringline,Collector<String>out)throwsException{String[]words=line.split(" ");for(Stringword:words){out.collect(word);}}}).map(newMapFunction<String,Tuple2<String,Integer>>(){publicTuple2<String,Integer>map(Stringword)throwsException{returnnewTuple2<String,Integer>(word,1);}}).keyBy(newKeySelector<Tuple2<String,Integer>,String>(){publicStringgetKey(Tuple2<String,Integer>tup)throwsException{returntup.f0;}}).timeWindow(Time.seconds(2)//两秒的窗口).sum(1);//使用一个线程执行打印操作wordCount.print().setParallelism(1);//执行程序env.execute("SocketWindowWordCountJava");


flink datastream程序有几个组成:

  1. env:创建flink job的运行环境
  2. source:从哪里获取到数据
  3. trans:对数据具体做哪些处理
  4. sink:数据写到什么地方
  5. execute:触发任务的运行
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 9:08:17

STM32G071RB隔离SPI实战:从地环路到数字隔离器调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/3 9:08:16

基于ESP32与电子墨水屏的冰箱购物清单同步方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/3 9:08:03

基于MAX14431与PIC18LF46K40的隔离型SPI通信链路设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/3 9:07:11

工业级SPI隔离通信实战:MAX14431与K60的10MHz链路设计与踩坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/3 9:06:58

STM32 SPI隔离设计实战:MAX14431BAEE+解决共模干扰

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/3 9:06:30

ODrive移植RTOS实战:从裸机到FreeRTOS的深度改造

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华