导入并配置Flink样例工程
操作场景
Flink针对多个场景提供样例工程,包含Java样例工程和Scala样例工程等,帮助客户快速学习Flink工程。
针对Java和Scala不同语言的工程,其导入方式相同。
以下操作步骤以导入Java样例代码为例。操作流程如图1所示。
操作步骤
- 参考获取MRS应用开发样例工程,获取样例代码解压目录中“src\flink-examples”目录下的样例工程文件夹“flink-examples-normal”。
- 在安全模式下,获取“src\flink-examples”下的样例工程flink-examples-security。
- 在普通模式下,获取“src\flink-examples”下的样例工程flink-examples-normal。
- 在导入样例工程之前,IntelliJ IDEA需要进行配置JDK。
- 打开IntelliJ IDEA,单击“Configure”下拉按钮。
图2 Choosing Configure
- 在“Configure”下拉菜单中单击“Project Defaults”。
图3 Choosing Project Defaults
- 在“Project Defaults”菜单中选择“Project Structure”。
图4 Project Defaults
- 在打开的“Project Structure”页面中,选择“SDKs”,单击绿色加号添加JDK。
图5 添加JDK
- 在弹出的“Select Home Directory for JDK”窗口,选择对应的JDK目录,然后单击“OK”。
图6 选择JDK目录
- 完成JDK选择后,单击“OK”完成配置。
图7 完成JDK配置
- 打开IntelliJ IDEA,单击“Configure”下拉按钮。
- (可选)如果导入Scala语言开发样例工程,还需要在IntelliJ IDEA中安装Scala插件。
- 在“Configure”下拉菜单中,单击“Plugins”。
图8 Plugins
- 在“Plugins”页面,选择“Install plugin from disk”。
图9 Install plugin from disk
- 在“Choose Plugin File”页面,选择对应版本的Scala插件包,单击“OK”。
图10 choose plugin File
- 在“Plugins”页面,单击“Apply”安装Scala插件。
- 在弹出的“Platform and Plugin Updates”页面,单击“Restart”,使配置生效。
图11 Platform and Plugin Updates
- 在“Configure”下拉菜单中,单击“Plugins”。
- 将Java样例工程导入到IDEA中。
- 打开IntelliJ IDEA。在“Quick Start”页面选择“Import Project”。
或者,针对已使用过的IDEA工具,您可以从IDEA主界面直接添加。选择
导入工程。图12 Import Project(Quick Start页面)
- 选择需导入的样例工程路径,然后单击“OK”。
图13 Select File or Directory to Import
- 选择从已存在的源码创建工程,然后单击“Next”。
图14 Create project from existing sources
- 确认导入路径和工程名称,单击“Next”。
图15 Import Project
- 确认导入工程的root目录,默认即可,单击“Next”。
图16 Import Project
- 确认IDEA自动识别的依赖库以及建议的模块结构,默认即可,单击“Next”。
- 确认工程所用JDK,然后单击“Next”。
图17 Select project SDK
- 导入结束,单击“Finish”,IDEA主页显示导入的样例工程。
图18 导入结束
图19 已导入工程
- 打开IntelliJ IDEA。在“Quick Start”页面选择“Import Project”。
- 导入样例工程依赖的Jar包。
如果通过开源镜像站方式获取的样例工程代码,在配置好Maven后, 相关依赖jar包将自动下载,不需手动添加。
当样例代码使用其他FusionInsight组件时,例如Kafka等,请去对应FusionInsight组件的服务端安装目录查找并添加依赖包。样例工程对应的依赖包详情,请参见参考信息。
- (可选)如果导入Scala语言开发的样例程序,还需要为工程设置语言。
- 在IDEA主页,选择“Project Structure”页面。 进入
- 选择“Modules”,选中工程名称,然后右键选择 。
图20 选择Scala语言
- 当IDEA可以识别出Scala SDK时,在设置界面,选择编译的依赖jar包,然后单击“OK”应用设置
图21 Add Scala Support
- 当系统无法识别出Scala SDK时,需要自行创建。
- 单击“Create...”。
图22 Create...
- 在“Select JAR's for the new Scala SDK”页面单击“Browse...”。
图23 Select JAR's for the new Scala SDK
- 在“Scala SDK files”页面选择scala sdk目录,单击“OK”。
图24 Scala SDK files
- 单击“Create...”。
- 设置成功,单击“OK”保存设置。
图25 设置成功
- 设置IDEA的文本文件编码格式,解决乱码显示问题。
- 在IDEA首页,选择图26 选择Settings
。
- 编码配置。
- 在“Settings”页面,展开“Editor”,选择“File Encodings”。
- 分别在右侧的“IDE Encoding”和“Project Encoding”的下拉框中,选择“UTF-8”。
- 单击“Apply”应用配置。
- 单击“OK”完成编码配置。
图27 Settings
- 请从Flink服务端安装目录获取相关的依赖包。
- 请从Kafka环境中获取Kafka依赖包。
- 具体依赖包请查看参考信息。
- 在IDEA首页,选择
- 配置Maven。
- 参考配置华为开源镜像仓章节描述,增加开源镜像仓地址等配置信息到本地Maven的“setting.xml”配置文件。
- 修改完成后,在IntelliJ IDEA选择“File > Settings > Build, Execution, Deployment > Build Tools > Maven”,勾选“User settings file”右侧的“Override”,并修改“User settings file”的值为当前“settings.xml”文件放置目录,确保该目录为“<本地Maven安装目录>\conf\settings.xml”。
图28 “settings.xml”文件放置目录
- 单击“Maven home directory”右侧的下拉菜单,选择Maven的安装路径。
- 单击“Apply”并单击“OK”。
- 在IntelliJ IDEA主界面右侧,单击“Maven Projects”,在“Maven Projects”界面执行“项目名称 > Lifecycle”目录下的“clean”和“compile”脚本。
图29 Maven Projects界面
参考信息
Flink客户端lib目录、opt目录中都有flink jar包,其中lib目录中默认是flink核心jar包,opt目录中是对接外部组件的jar包(例如flink-connector-kafka*.jar),若应用开发中需要请手动复制相关jar包到lib目录中。
针对Flink提供的几个样例工程,其对应的运行依赖包如下:
- DataStream程序样例工程(Java/Scala)
- flink-dist_*.jar
flink-dist_*.jar可在Flink的客户端或者服务端安装路径的lib目录下获取。
- flink-dist_*.jar
- 向Kafka生产并消费数据程序样例工程(Java/Scala)
- kafka-clients-*.jar
- flink-connector-kafka_*.jar
- flink-connector-kafka_*.jar可在Flink客户端或者服务端安装路径的opt目录下获取。
- kafka-clients-*.jar由Kafka组件发布提供,可在Kafka组件客户端或者服务端安装路径下的lib目录下获取。
- 异步Checkpoint机制程序样例工程(Java/Scala)
- flink-dist_*.jar
- pipeline程序样例工程(Java/Scala)
- flink-connector-netty_*.jar
- flink-dist_*.jar
- flink-shaded-curator-*.jar
- curator-client-2.12.0.jar
- curator-framework-2.12.0.jar
- flink-shaded-curator-*.jar可在Flink客户端或者服务端安装路径的opt目录下获取。
- flink-connector-netty_*.jar、curator-client-2.12.0.jar、curator-framework-2.12.0.jar可在二次开发样例代码编译后产生的lib文件夹下获取。
- flink-shaded-curator-*.jar仅适用于MRS 3.0.X集群。
- curator-client-2.12.0.jar、curator-framework-2.12.0.jar仅适用于MRS 3.1.X集群。
- Stream SQL Join样例工程(Java)
- kafka-clients-*.jar
- flink-connector-kafka_2.11*.jar
- flink-connector-kafka-base_*.jar
- flink-connector-kafka_*.jar
- flink-dist_2.11*.jar
- flink-table_2.11*.jar
- flink-connector-kafka-base_*.jar、flink-connector-kafka_*.jar可在Flink客户端或者服务端安装路径的“opt”目录下获取。
- flink-connector-kafka-base_*.jar、flink-connector-kafka_*.jar仅适用于MRS 3.0.X集群。
- flink-connector-kafka_2.11*.jar、flink-dist_2.11*.jar和flink-table_2.11*.jar仅适用于MRS 3.1.X集群。