安装环境准备
- mac
- java 8以上
- idea
安装步骤
-
下载后解压进入目录
-
flink-1.8.2/bin目录下运行启动脚本:start-cluster.sh
- image.png
-
查看是否启动成功
浏览器输入 :http://localhost:8081- image.png
-
如果有问题,可以查看运行日志:log/
ps:mac还可以尝试用命令安装
brew install apache-flink
demo
1 利用mvn创建一个工程
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-scala \
-DarchetypeVersion=1.7.2
2 项目构建过程中需要输入groupId,artifactId,version和package
构建后目录结构如下:
- image.png
3 本教程中的代码
https://github.com/WayneZeng/springcloud-demo/tree/master/flink/flink-demo
4 idea中运行java程序
5 控制台启动一个通讯进程,利用nc命令输入字符串
nc命令简介
)
7 以上是单机方式运行,用集群的方式运行如下:
- maven打包java工程生成jar
- 控制台输入jps,看下前面启动的TaskManagerRunner还在,不在的话回到前面运行一次:start-cluster.sh
- /bin/flink run xxxxx.jar --port 9000
- 控制台继续输入可以去web页面看到job的运行情况
- image.png
常见错误:
1 org.apache.flink.api.common.functions.InvalidTypesException
Flink 类型提取依赖于继承等机制,而 lambda 函数比较特殊,它是匿名的,也没有与之相关的类,所以其类型信息较难获取。Eclipse 的 JDT 编译器会把 lambda 函数的泛型签名等信息写入编译后的字节码中,而对于 javac 等常见的其他编译器,则不会这样做,因而 Flink 就无法获取具体类型信息了。
参考官方文档说明
解决方式:
调用return显式指定类型
.returns(WordWithCount.class)
2 This type (GenericType<org.myorg.quickstart.SocketWindowWordCount.WordWithCount>) cannot be used as key.
自己定义一个JAVABEAN的时候,不要忘记写无参构造参数
image.png
网友评论