Flink实例-Wordcount详细步骤
link实例之Wordcount详细步骤
1.我的IDE是IntelliJ IDEA.在官网上https://www.jetbrains.com/idea/下载最新版2018.2的IDEA,如下图。破解可以再http://idea.lanyus.com/上获取破解码进行破解,如下图。



2.当IDE准备就绪后,开始创建一个项目名为bbb的maven项目,如下图。





3.在新窗口打开bbb项目时,IDEA会提示我们是否自动导包。选择自动导包,如下图。

4.对pom.xml配置文件进行修改,如下代码。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.xiao</groupId>
<artifactId>bbb</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.10</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_2.10</artifactId>
<version>1.2.0</version>
</dependency> </dependencies> </project>
5.在src/main/java/目录下新建一个类,我的类名为WordCount,如下代码。


import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.util.Collector; public class WordCount { public static void main(String[] args) throws Exception {
//定义socket的端口号
int port;
try{
ParameterTool parameterTool = ParameterTool.fromArgs(args);
port = parameterTool.getInt("port");
}catch (Exception e){
System.err.println("没有指定port参数,使用默认值9000");
port = 9000;
} //获取运行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); //连接socket获取输入的数据
DataStreamSource<String> text = env.socketTextStream("10.192.12.106", port, "\n"); //计算数据
DataStream<WordWithCount> windowCount = text.flatMap(new FlatMapFunction<String, WordWithCount>() {
public void flatMap(String value, Collector<WordWithCount> out) throws Exception {
String[] splits = value.split("\\s");
for (String word:splits) {
out.collect(new WordWithCount(word,1L));
}
}
})//打平操作,把每行的单词转为<word,count>类型的数据
.keyBy("word")//针对相同的word数据进行分组
.timeWindow(Time.seconds(2),Time.seconds(1))//指定计算数据的窗口大小和滑动窗口大小
.sum("count"); //把数据打印到控制台
windowCount.print()
.setParallelism(1);//使用一个并行度
//注意:因为flink是懒加载的,所以必须调用execute方法,上面的代码才会执行
env.execute("streaming word count"); } /**
* 主要为了存储单词以及单词出现的次数
*/
public static class WordWithCount{
public String word;
public long count;
public WordWithCount(){}
public WordWithCount(String word, long count) {
this.word = word;
this.count = count;
} @Override
public String toString() {
return "WordWithCount{" +
"word='" + word + '\'' +
", count=" + count +
'}';
}
} }
6.开启IP为10.192.12.106的虚拟机,并开启该虚拟机的终端,在终端输入如下命令,该命令可以打开一个端口号为9000的监听,输入命令后光标会停留在如下图的地方。
nc -l

7.切换回IDEA,在菜单栏Build->Build Project,然后运行该类,当控制台console输出如下图所示的信息时表示Wordcount成功的与9000的监听端口建立了连接。



8.在虚拟机终端开的光标停留出,输入hello hello world world world world,然后 回车。在IDEA的控制台会显示如下单词和词频的信息,表示成功。


9.接下来把项目bbb打jar包,上传Flink后台运行,进行如下图操作。
首先要保证Java Compiler版本为1.8。


然后选择File->Project Structure,进行修改。










10.在配置好Flink的虚拟机下,进入目录/opt/data/flink-1.3.2/bin中,输入如下命令,开启Flink的本地模式。(不会配置flink的小伙伴可以打开链接https://www.cnblogs.com/ALittleMoreLove/p/9396118.html)
./start-local.sh

11.在浏览器里输入开启Flink守护进程的虚拟机的IP和8081端口,进入如下Flink前端页面。

12.上传bbb.jar文件到Flink后端运行。






备注:在学习大数据的漫长道路上,我们会遇到各种各样奇怪的问题,在尝试了多种方法仍然无法解决后 如果再没有高人指点,经常一个问题就卡好几天。这种无奈与绝望的感觉我想各位自学大数据的小伙伴们应该深有体会。我个人解决问题通常有两种方法:一种是直接找大牛帮忙,另外一种是在网上找各种相关的博客和帖子,再从中总结出一套可以解决自己问题的方法。自己探索新知识时,往往是很艰辛的,遇到好多天也解决不了的问题也是很正常的,但是千万不要放弃,坚持下来就一定会有收获的!Wordcount实例令我躺了两天的坑,最后终于找到了解决的方法,希望这篇随笔可以对自学大数据的小伙伴提供一定的帮助。
Flink实例-Wordcount详细步骤的更多相关文章
- webpack+vue+vueRouter模块化构建小demo实例超详细步骤(附截图、代码、入门篇)
		
说明:本demo使用yarn代替npm指令来下载一系列依赖,有详细指令说明:使用WebStorm下Terminal来输入指令: >开始(确认已经安装node环境和yarn包管理工具) 1.新建项 ...
 - VS2012+Win7网站发布详细步骤
		
VS2012+Win7网站发布详细步骤 本机环境: 本文分三个部分介绍Web项目发布的常规方法,大神级别可以略过,主要是为了方便一些初学者. 第一部分:VS2012把项目发布到文件系统. 第二部分:I ...
 - JDBC连接sql server数据库的详细步骤和代码
		
JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja ...
 - java Spring整合Freemarker的详细步骤
		
java Spring整合Freemarker的详细步骤 作者: 字体:[增加 减小] 类型:转载 时间:2013-11-14我要评论 本文对Spring整合Freemarker步骤做了详细的说明,按 ...
 - elasticsearch kibana + 分词器安装详细步骤
		
elasticsearch kibana + 分词器安装详细步骤 一.准备环境 系统:Centos7 JDK安装包:jdk-8u191-linux-x64.tar.gz ES安装包:elasticse ...
 - 使用autotools工具用configure、make、make install编译安装linux工程的详细步骤
		
使用autotools工具用configure.make.make install编译安装linux工程的详细步骤 转载tmxkwzy 最后发布于2016-11-24 10:20:15 阅读数 324 ...
 - unity导出工程导入到iOS原生工程中详细步骤
		
一直想抽空整理一下unity原生工程导入iOS原生工程中的详细步骤.做iOS+vuforia+unity开发这么长时间了.从最初的小小白到现在的小白.中间趟过了好多的坑.也有一些的小小收货.做一个喜欢 ...
 - java连接mysql数据库详细步骤解析
		
java连接mysql数据库详细步骤解析 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar 第二步:导入下载的J ...
 - svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录
		
svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录 Windows下,svn服务器IP本来是内网一台服务器上 ...
 
随机推荐
- python 二叉树计算器
			
例子:计算1+2+3+4的值 代码: class Buffer(object): """字符串处理函数""" def __init__(se ...
 - 使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期
			
1.使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期: 1 var newdate = new Date(); 2 var nowyear = newdat ...
 - java 中linq 的使用方式 筛选 查找 去重
			
1.筛选 $.Enumerable.From(value).Where(function(x) {//value 为被操作的内容 return x.name == name;//第一个name为val ...
 - 【Leetcode】【Medium】Minimum Path Sum
			
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...
 - ajax 请求 服务器 响应内容过长 返回500错误的解决方法
			
在web.config试试加上 <system.web.extensions> <scripting> <webServices> <jsonSerializ ...
 - 安装或删除Skype for business server组件的时候,报错"错误: 找不到 SQL 服务"
			
安装或删除Skype for business server组件的时候,到了安装所有并置数据库的时候,报错“错误: 找不到 SQL 服务.确保计算机 skype.centos.com 中安装了 SQL ...
 - W3School学习网站
			
http://www.w3school.com.cn/tags/att_form_autocomplete.asp
 - 高CPU业务
			
高CPU业务 Gearman是当年LiveJournal用来做图片resize的,大家也明白图片resize是一个高CPU的操作,如果让web网站去做这个高CPU的功能,有可能会拖垮你的 web应用, ...
 - OC 指向指针的指针
			
#import <Foundation/Foundation.h> void changeC(char *d) { *d = ; } void changeStr(NSString **s ...
 - EOF及相关函数
			
结论:EOF是在头文件stdio.h中预定义的一个宏,而eof(end of file)是一个与标准输入/输出流相关联的标志位.当文件指针已经指向文件尾且再次尝试读取时,eof标志会被设置.同时,某些 ...