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配置文件进行修改,如下代码。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6.  
  7. <groupId>com.xiao</groupId>
  8. <artifactId>bbb</artifactId>
  9. <version>1.0-SNAPSHOT</version>
  10.  
  11. <dependencies>
  12. <dependency>
  13. <groupId>org.apache.flink</groupId>
  14. <artifactId>flink-java</artifactId>
  15. <version>1.2.0</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.apache.flink</groupId>
  19. <artifactId>flink-streaming-java_2.10</artifactId>
  20. <version>1.2.0</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.apache.flink</groupId>
  24. <artifactId>flink-clients_2.10</artifactId>
  25. <version>1.2.0</version>
  26. </dependency>
  27.  
  28. </dependencies>
  29.  
  30. </project>

5.在src/main/java/目录下新建一个类,我的类名为WordCount,如下代码。

  1. import org.apache.flink.api.common.functions.FlatMapFunction;
  2. import org.apache.flink.api.java.utils.ParameterTool;
  3. import org.apache.flink.streaming.api.datastream.DataStream;
  4. import org.apache.flink.streaming.api.datastream.DataStreamSource;
  5. import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
  6. import org.apache.flink.streaming.api.windowing.time.Time;
  7. import org.apache.flink.util.Collector;
  8.  
  9. public class WordCount {
  10.  
  11. public static void main(String[] args) throws Exception {
  12. //定义socket的端口号
  13. int port;
  14. try{
  15. ParameterTool parameterTool = ParameterTool.fromArgs(args);
  16. port = parameterTool.getInt("port");
  17. }catch (Exception e){
  18. System.err.println("没有指定port参数,使用默认值9000");
  19. port = 9000;
  20. }
  21.  
  22. //获取运行环境
  23. StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
  24.  
  25. //连接socket获取输入的数据
  26. DataStreamSource<String> text = env.socketTextStream("10.192.12.106", port, "\n");
  27.  
  28. //计算数据
  29. DataStream<WordWithCount> windowCount = text.flatMap(new FlatMapFunction<String, WordWithCount>() {
  30. public void flatMap(String value, Collector<WordWithCount> out) throws Exception {
  31. String[] splits = value.split("\\s");
  32. for (String word:splits) {
  33. out.collect(new WordWithCount(word,1L));
  34. }
  35. }
  36. })//打平操作,把每行的单词转为<word,count>类型的数据
  37. .keyBy("word")//针对相同的word数据进行分组
  38. .timeWindow(Time.seconds(2),Time.seconds(1))//指定计算数据的窗口大小和滑动窗口大小
  39. .sum("count");
  40.  
  41. //把数据打印到控制台
  42. windowCount.print()
  43. .setParallelism(1);//使用一个并行度
  44. //注意:因为flink是懒加载的,所以必须调用execute方法,上面的代码才会执行
  45. env.execute("streaming word count");
  46.  
  47. }
  48.  
  49. /**
  50. * 主要为了存储单词以及单词出现的次数
  51. */
  52. public static class WordWithCount{
  53. public String word;
  54. public long count;
  55. public WordWithCount(){}
  56. public WordWithCount(String word, long count) {
  57. this.word = word;
  58. this.count = count;
  59. }
  60.  
  61. @Override
  62. public String toString() {
  63. return "WordWithCount{" +
  64. "word='" + word + '\'' +
  65. ", count=" + count +
  66. '}';
  67. }
  68. }
  69.  
  70. }

6.开启IP为10.192.12.106的虚拟机,并开启该虚拟机的终端,在终端输入如下命令,该命令可以打开一个端口号为9000的监听,输入命令后光标会停留在如下图的地方。

  1. 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)

  1. ./start-local.sh

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

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

备注:在学习大数据的漫长道路上,我们会遇到各种各样奇怪的问题,在尝试了多种方法仍然无法解决后 如果再没有高人指点,经常一个问题就卡好几天。这种无奈与绝望的感觉我想各位自学大数据的小伙伴们应该深有体会。我个人解决问题通常有两种方法:一种是直接找大牛帮忙,另外一种是在网上找各种相关的博客和帖子,再从中总结出一套可以解决自己问题的方法。自己探索新知识时,往往是很艰辛的,遇到好多天也解决不了的问题也是很正常的,但是千万不要放弃,坚持下来就一定会有收获的!Wordcount实例令我躺了两天的坑,最后终于找到了解决的方法,希望这篇随笔可以对自学大数据的小伙伴提供一定的帮助。

Flink实例-Wordcount详细步骤的更多相关文章

  1. webpack+vue+vueRouter模块化构建小demo实例超详细步骤(附截图、代码、入门篇)

    说明:本demo使用yarn代替npm指令来下载一系列依赖,有详细指令说明:使用WebStorm下Terminal来输入指令: >开始(确认已经安装node环境和yarn包管理工具) 1.新建项 ...

  2. VS2012+Win7网站发布详细步骤

    VS2012+Win7网站发布详细步骤 本机环境: 本文分三个部分介绍Web项目发布的常规方法,大神级别可以略过,主要是为了方便一些初学者. 第一部分:VS2012把项目发布到文件系统. 第二部分:I ...

  3. JDBC连接sql server数据库的详细步骤和代码

    JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja ...

  4. java Spring整合Freemarker的详细步骤

    java Spring整合Freemarker的详细步骤 作者: 字体:[增加 减小] 类型:转载 时间:2013-11-14我要评论 本文对Spring整合Freemarker步骤做了详细的说明,按 ...

  5. elasticsearch kibana + 分词器安装详细步骤

    elasticsearch kibana + 分词器安装详细步骤 一.准备环境 系统:Centos7 JDK安装包:jdk-8u191-linux-x64.tar.gz ES安装包:elasticse ...

  6. 使用autotools工具用configure、make、make install编译安装linux工程的详细步骤

    使用autotools工具用configure.make.make install编译安装linux工程的详细步骤 转载tmxkwzy 最后发布于2016-11-24 10:20:15 阅读数 324 ...

  7. unity导出工程导入到iOS原生工程中详细步骤

    一直想抽空整理一下unity原生工程导入iOS原生工程中的详细步骤.做iOS+vuforia+unity开发这么长时间了.从最初的小小白到现在的小白.中间趟过了好多的坑.也有一些的小小收货.做一个喜欢 ...

  8. java连接mysql数据库详细步骤解析

    java连接mysql数据库详细步骤解析      第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar      第二步:导入下载的J ...

  9. svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录

    svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录 Windows下,svn服务器IP本来是内网一台服务器上 ...

随机推荐

  1. VS2015配置Entity Framework Power Tools Bate4,还有一些使用与注意的地方

    今天使用vs2015重新安装了这个名为Entity Framework Power Tools的插件,由于它只支持到2013,因此需要进行一些操作方能使用 下面是一些参考文档 http://www.c ...

  2. asmlinkage的作用

    本文转载自:http://blog.chinaunix.net/uid-24945116-id-83893.html 学习啦! asmlinkage是个宏,使用它是为了保持参数在stack中.因为从汇 ...

  3. 一个典型的后台软件系统的设计复盘——(三)打通任督二脉-context

    武侠小说练功讲究打通任督二脉.程序设计练到一定程度也讲究打通任督二脉.好奇心强的同学可以搜搜“打通任督二脉有什么感觉”. spring的任督二脉ApplicationContext 最经典的任督二脉莫 ...

  4. Spring注解开发-全面解析常用注解使用方法之组件注册

    目录 1. @Configuration 2. @ComponentScan excludeFilters includeFilters 使用自定义TypeFilter 3. @Bean @Scope ...

  5. sql 连表

    左外 右外连接 select * from tb1 left   join tb2 on(tb1.id = tb2.id) select * from tb1 right join tb2 on(tb ...

  6. spring的声明式事务,及redis事务。

    Redis的事务功能详解 http://ghoulich.xninja.org/2016/10/12/how-to-use-transaction-in-redis/ MULTI.EXEC.DISCA ...

  7. zt 李鸿章听过《彩云追月》?

    ZT 李鸿章听过<彩云追月>? 2013-05-11 09:35:52 编辑 删除 归档在 观世上之音 | 浏览 1041 次 | 评论 1 条 尝试在网上找一点有关<彩云追月> ...

  8. SharpZipLib压缩解压

    一.介绍 SharpZipLib是一个完全由C#编写的ZIP,GZIP,Tar和BZIP2 Library,可以方便的支持这几种格式的压缩和解压缩. https://github.com/icshar ...

  9. ranger文件管理器

    我是一个 CLI 控,但一直苦于没有一个好用的文件管理器.虽然 vifm 的 vim 键绑定很合我的胃口,但它实在不好用.所以我一直没有停止过寻找类似软件的念头.直到尝试了 Ranger, 觉得很不错 ...

  10. Yii 多表关联relations

    1,首先多表关联是在models/xx.php的relations里配置的.而且是互配,但有区别.格式:'VarName'=>array('RelationType', 'ClassName', ...