千家信息网

如何编写最简单的helloWorld

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这期内容当中小编将会给大家带来有关如何编写最简单的helloWorld,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。实验环境JDK 1.8IDE Intellij
千家信息网最后更新 2024年11月30日如何编写最简单的helloWorld

这期内容当中小编将会给大家带来有关如何编写最简单的helloWorld,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

实验环境

JDK 1.8

IDE Intellij idea

Flink 1.8.1

实验内容

创建一个Flink简单Demo,可以从流数据中统计单词个数。

实验步骤

首先创建一个maven项目,其中pom.xml文件内容如下:

            1.8.1                            org.apache.flink            flink-java            ${flink.version}                            org.apache.flink            flink-streaming-java_2.11            ${flink.version}                            org.apache.flink            flink-streaming-scala_2.11            ${flink.version}                            org.apache.flink            flink-connector-wikiedits_2.11            ${flink.version}                                                    org.apache.maven.plugins                maven-compiler-plugin                                    8                    8                                                        org.springframework.boot                spring-boot-maven-plugin                2.1.4.RELEASE                                    wikiedits.StreamingJob                                                                                                        repackage                                                                                                    org.apache.maven.plugins                maven-surefire-plugin                                    true                                        

创建一个包com.vincent,并且创建一个类StreamingJob.java

public class WikipediaAnalysis {        public static void main(String[] args) throws Exception {        }}

Flink 程序的第一步是创建一个StreamExecutionEnvironment。StreamExecutionEnvironment可以设置参数并且导入一些外部系统的数据源。

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

接下来创建一个外部数据源,外部数据源使用nc -l 9000 表示服务器端开启监听9000端口,并可以发送数据。

DataStream text = env.socketTextStream("192.168.152.45", 9000);

这样就添加了一个流文本数据源,有了DataStream就可以获取数据了,然后对数据进行分析:

        DataStream> dataStream = text.flatMap(new FlatMapFunction>() {            @Override            public void flatMap(String s, Collector> collector) throws Exception {                String[] tokens = s.toLowerCase().split("\\W+");                for (String token : tokens) {                    if (token.length() > 0) {                        collector.collect(new Tuple2(token, 1));                    }                }            }        }).keyBy(0).timeWindow(Time.seconds(5)).sum(1);

flatMap表示将嵌套集合转换并平铺成非嵌套集合,字符串是s,返回值是Collector>。并且根据keyBy(0)即第0个字段进行统计加一操作。.timeWindow()指定窗口大小是5秒。

所以整体代码如下:

public class StreamingJob {    public static void main(String[] args) throws Exception {        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();        DataStream text = env.socketTextStream("192.168.152.45", 9000);        DataStream> dataStream = text.flatMap(new FlatMapFunction>() {            @Override            public void flatMap(String s, Collector> collector) throws Exception {                String[] tokens = s.toLowerCase().split("\\W+");                for (String token : tokens) {                    if (token.length() > 0) {                        collector.collect(new Tuple2(token, 1));                    }                }            }        }).keyBy(0).timeWindow(Time.seconds(5)).sum(1);        dataStream.print();        // execute program        env.execute("Java WordCount from SocketTextStream Example");    }}

运行

运行main方法,然后在服务器端执行nc -l 9000 并且输入文本:

iie4bu@swarm-manager:~$ nc -l 9000a b d d e f

然后在intellij控制台将输出:

1> (b,1)3> (a,1)1> (f,1)3> (d,2)1> (e,1)

可以统计出每个单词的次数

上述就是小编为大家分享的如何编写最简单的helloWorld了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

0