大数据HelloWorld-Flink实现WordCount

 更新时间:2019年08月15日 09:19:06   作者:指尖数虫  
这篇文章主要介绍了大数据HelloWorld-Flink实现WordCount的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

所有的语言开篇都是Hello Word,数据处理引擎也有Hello Word。那就是Word Count。MR,Spark,Flink以来开篇第一个程序都是Word Count。那么今天Flink开始目标就是在本地调试出Word Count。

单机安装Flink

开始Flink之前先在本机尝试安装一下Flink,当然FLink正常情况下是部署的集群方式。作者比较穷,机器配置太低开不了几个虚拟机。所以只能先演示个单机的安装。

Apache Flink需要在Java1.8+以上的环境中运行 。

所以,先确保自己的JDK版本是1.8包含以上的。

 

Flink单机部署非常简单,只需安装下载安装即可。如果需要与Hadoop版本结合,那么下载相应的Hadoop关联版本即可。如果不与Hadoop结合就直接下载Scala版即可。我这里就直接下载了Scala2.11的相关版本。

 

点击进入Apache页面进行下载,大小约有283MB。

把下载下来的压缩包进行解压即可。

打开命令行直接执行 

/bin/start-cluster.bat

进行启动。 

浏览器打开 http://localhost:8081

至此在Windows10环境下即完成Flink的启动。

编写WordCount

因为Flink是由Scala进行开发的,而Scala是基于JVM的一种语言。所以最终也会转换为JAVA字节码文件,所以Flink程序可以由Java、Scala两种语言都可以进行开发。也可以同时开发。比如Java写一部分代码,Scala写另一部分代码。可以参考<Apache Flink利用Maven对Scala与Java进行混编>。

Flink官方提供快速生成工程的两种工具:SBT与Maven。由于作者比较熟悉Maven,( 或者说没用过SBT )。所以直接使用Maven快速创建一个工程。

Java版本

mvn archetype:generate                \
   -DarchetypeGroupId=org.apache.flink       \
   -DarchetypeArtifactId=flink-quickstart-java   \
   -DarchetypeVersion=1.8.0

Scala版本

mvn archetype:generate                \
   -DarchetypeGroupId=org.apache.flink       \
   -DarchetypeArtifactId=flink-quickstart-scala   \
   -DarchetypeVersion=1.8.0

按照提示输入相关信息,即可生成最终的项目。

├── pom.xml
└── src
  └── main
    ├── resources
    │  └── log4j.properties
    └── scala/java
      └── org
        └── myorg
          └── quickstart
            ├── BatchJob.scala
            └── StreamingJob.scala

把工程导入到IDEA中

如果使用Scala的话,那么需要安装Scala的插件。搜索安装同时需要把Scala语言包进行安装。

不知道如何操作可以联系我 微信公号<指尖数虫>。

package jar;

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.ReduceFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;

public class BatchJob {

	public static void main(String[] args) throws Exception {
		// set up the batch execution environment
		final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
		//读取目录下的文件
		DataSource<String> data = env.readTextFile("/opt/Server_Packets/log/ServerLog_1_runtime.log");
		//把文件中的内容按照空格进行拆分为 word,1  1 是为了能够在下面进行计算.
		data.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
			@Override
			public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) throws Exception {
				for (String word : s.split(" ")){
					collector.collect(new Tuple2<>(word,1));
				}
			}
		})
		// 按照元组中的第1位进行分组
		.groupBy(0)
		// 分组的元组的计算方式为 value +value 也就是刚才的 同样的词 把 1+1
		.reduce(new ReduceFunction<Tuple2<String, Integer>>() {
			@Override
			public Tuple2<String, Integer> reduce(Tuple2<String, Integer> t2, Tuple2<String, Integer> t1) throws Exception {
				return new Tuple2<>(t1.f0,t1.f1+ t2.f1);
			}
		})
		//输出结果
		.print();
	}
}

总结

以上所述是小编给大家介绍的大数据HelloWorld-Flink实现WordCount,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 编码史记

    编码史记

    昨天听了一个同事的编码讲座,很精彩。想起了要写这个文章分享一下各种编码是如何产生的
    2012-04-04
  • 深入浅析ELK原理与简介

    深入浅析ELK原理与简介

    ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。这篇文章主要介绍了ELK原理与介绍,需要的朋友可以参考下
    2021-09-09
  • 微信小程序开发实例详解

    微信小程序开发实例详解

    这篇文章主要介绍了微信小程序开发实例详解的相关资料,需要的朋友可以参考下
    2016-09-09
  • Burpsuite入门及使用详细教程

    Burpsuite入门及使用详细教程

    Burp Suite是用于攻击web应用程序的集成平台,接下来通过本文给大家介绍Burpsuite入门及使用详细教程,感兴趣的朋友一起看看吧
    2021-09-09
  • vscode 配置eslint和prettier正确方法

    vscode 配置eslint和prettier正确方法

    ESLint 是一款语法检测工具而prettier 是一个代码格式化插件,今天给大家分享vscode 配置eslint和prettier正确方法,感兴趣的朋友一起看看吧
    2021-07-07
  • Mac下更换Homebrew镜像源的实现方法

    Mac下更换Homebrew镜像源的实现方法

    本文主要介绍了Mac下更换Homebrew镜像源的实现方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • git push & git pull 推送/拉取分支的具体使用

    git push & git pull 推送/拉取分支的具体使用

    这篇文章主要介绍了git push & git pull 推送/拉取分支的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 详解ansible批量管理服务

    详解ansible批量管理服务

    这篇文章主要介绍了ansible批量管理服务的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Webpack基础教程之名词解释

    Webpack基础教程之名词解释

    webpack 是一个现代JavaScript 应用程序的静态模块打包器,这次为大家简单介绍一下webpack及关于webpack的一些专属名词入口(entry),输出(output),loader,插件(plugins)
    2020-02-02
  • 如何用Idea或者webstorm跑一个Vue项目(步骤详解)

    如何用Idea或者webstorm跑一个Vue项目(步骤详解)

    这篇文章主要介绍了如何用Idea或者webstorm跑一个Vue项目,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02

最新评论