1. mac平台安装flink(默认最新版)

brew install apache-flink

安装结果:

Version 1.7.1, commit ID: 89eafb4

2. jdk版本,我尝试使用了Java8和Java11,都能兼容

3. 在flink的安装目录下,启动flink

目录一般默认在/usr/local/Cellar/apache-flink/1.7.1/ (查找flink安装目录:find / -name flink)

./start-cluster.sh

4. 访问localhost:8081即可进入flink的dashboard,如下所示:

5. 使用idea,创建一个maven项目,注册成flink的一个job

5.1. 创建maven项目

5.2. 添加文件SocketTextStreamWordCount.java,代码如下:

package com.miaoying.flink;

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector; public class SocketTextStreamWordCount {
public static void main(String[] args) throws Exception {
if (args.length != 2) {
System.err.println("USAGE:\nSocketTextStreamWordCount <hostname> <port>");
return;
} String hostname = args[0];
Integer port = Integer.parseInt(args[1]); final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStreamSource<String> stream = env.socketTextStream(hostname, port);
SingleOutputStreamOperator<Tuple2<String, Integer>> sum = stream.flatMap(new LineSplitter())
.keyBy(0)
.sum(1);
sum.print();
env.execute("Java WordCount from SocketTextStream Excample");
} public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> { @Override
public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) {
String[] tokens = s.toLowerCase().split("\\W+");
for (String token : tokens) {
if (token.length() > 0) {
collector.collect(new Tuple2<String, Integer>(token, 1));
}
}
}
}
}

5.3. 进入项目工程目录,打成jar包:

mvn clean package -Dmaven.skip.test=true

5.4. 打开terminal,开启监听端口 9000

nc -l 9000

5.5. 进入flink安装目录bin下执行以下命令:

flink run -c com.miaoying.flink.SocketTextStreamWordCount /Users/miaoying/Documents/program/flink/target/original-flink01-1.0-SNAPSHOT.jar 127.0.0.1 9000

输出:

Starting execution of program

5.6. 在dashboard的running jobs中可以看到刚刚启动的job,如下图所示:

5.7. 可以在nc监听端口中随意输入内容,比如123

5.8. 然后可以去flink的安装目录下查看日志信息,/usr/local/Cellar/apache-flink/1.7.1/libexec/log目录下执行:

tail -f flink-miaoying-taskexecutor-0-localhost.out

如下所示:

本文flink程序简单介绍就此结束。

学习资源主要来自:

https://ci.apache.org/projects/flink/flink-docs-release-1.7/dev/batch/examples.html#running-an-example

http://www.54tianzhisheng.cn/2018/09/18/flink-install

flink入门:01 构建简单运行程序的更多相关文章

  1. SpringBoot入门 一 构建简单工程

    环境准备:jdk1.7(推荐)以上,tomcat8(推荐)以上,或者使用插件自带.mevan插件3.2以上,eclipse编辑工具 pom文件基本配置如下 <project xmlns=&quo ...

  2. koa2入门--01.ES6简单复习、koa2安装以及例子

    1.ES6简单复习 /*let 和 const: let用于定义一个块作用域的变量,const 定义一个常量 */ let a = 'test'; const b = 2; /*对象的属性和方法的简写 ...

  3. 006 01 Android 零基础入门 01 Java基础语法 01 Java初识 06 使用Eclipse开发Java程序

    006 01 Android 零基础入门 01 Java基础语法 01 Java初识 06 使用Eclipse开发Java程序 Eclipse下创建程序 创建程序分为以下几个步骤: 1.首先是创建一个 ...

  4. 使用ASP.NET 构建 Web 应用程序快速入门-8小时的免费培训视频

    - Scott Hanselman的中文博客[转载] [原文发表地址] Building Web Apps with ASP.NET Jump Start - 8 Hours of FREE Trai ...

  5. 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1

    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...

  6. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  7. 使用 Eclipse PhoneGap 构建 Android 应用程序入门

    Eclipse 是一种支持多种技术的开源集成开发环境 (IDE),但本文重点介绍 Java 支持,这也是 Android 应用程序的“母语”.Android 是 Google 发布的开源移动操作系统. ...

  8. 图解简单C程序的运行时结构

    程序在内存中的存储分为三个区域,分别是动态数据区.静态数据区和代码区.函数存储在代码区,全局变量以及静态变量存储在静态数据区,而在程序执行的时候才会在动态数据区产生数据.程序执行的本质就是代码区的指令 ...

  9. spring mvc构建WEB应用程序入门例子

    在使用spring mvc 构建web应用程序之前,需要了解spring mvc 的请求过程是怎样的,然后记录下如何搭建一个超简单的spring mvc例子. 1) spring mvc的请求经历 请 ...

随机推荐

  1. 小程序swiper指板点样式修改

    swiper(class名).wx-swiper-dots.wx-swiper-dots-horizontal{    //距离底部高度 margin-bottom: 2rpx; } swiper(c ...

  2. vue 新建项目

    1. 首先安装node.js,安装时一直点Next,知道Finish就可以安装成功 2. 打开控制命令执行程序cmd,输入node -v ,可以查看node的版本信息,即安装成功,我安装的是v8.12 ...

  3. javascript 之 继承

    1.传统方式--->原型链  (过多继承了没用的属性) Grand.prototype.lastname = 'zhang' function Grand(); } var grand = ne ...

  4. Python 3.6print 出现 SyntaxError: invalid syntax

    开始使用sublime学习python,编写代码如图 Ctrl+B运行以后,报错   SyntaxError: invalid syntax 百度查询以后,大部分的回答都是说,python在3.0以后 ...

  5. for循环比较

    在实际的开发过程中,一般都会用到for循环,都可以用来遍历,但是这几个之间又存在细微的差别! 一,传统的for循环: var arr = ['good', 'good', 'study']; for ...

  6. angular6 导出json数据到excal表

    1 首先使用npm下载插件依赖的安装包   npm install file-saver --save   npm install xlsx --save   2 引入项目中的ts文件中   impo ...

  7. 学习笔记TF056:TensorFlow MNIST,数据集、分类、可视化

    MNIST(Mixed National Institute of Standards and Technology)http://yann.lecun.com/exdb/mnist/ ,入门级计算机 ...

  8. 改变一下主要发博的方向吧...转scratch!

    因为expression2实在是没什么好说的,BUI,水滴鱼大佬还有其他贴吧上的大佬,实在是多得不行,我一个小人物也说不了什么,然而scratch我却可以多发发脚本,思路,美工啊等等.所以以后我就主要 ...

  9. 2017第八届蓝桥杯C/C++语言A组

    一:题目: 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R ...

  10. 批量找注入 python3+sqlmap结合

    注入一直都是用sqlmap  导致本来就不怎么精通的手工注入现在就忘的一干二净 想实战练习  却一时又找不到有注入的网站   于是便有了这篇文章 想找个批量获取域名链接的工具   但都是只是获取域名而 ...