
# 导入并配置Flink样例工程
#### 操作场景
Flink针对多个场景提供样例工程，包含Java样例工程和Scala样例工程等，帮助客户快速学习Flink工程。
针对Java和Scala不同语言的工程，其导入方式相同。
以下操作步骤以导入Java样例代码为例。操作流程如[图1]所示。
图1导入样例工程流程   
![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904344.png)
#### 操作步骤
1. 参考[获取MRS应用开发样例工程](https://support.huaweicloud.com/devg3-mrs/mrs_07_010002.html)，获取样例代码解压目录中"src\\flink-examples"目录下的样例工程文件夹"flink-examples-normal"。
   
   ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 在安全模式下，获取"src\\flink-examples"下的样例工程flink-examples-security。
   
   - 在普通模式下，获取"src\\flink-examples"下的样例工程flink-examples-normal。
    
   
   
2. 在导入样例工程之前，IntelliJ IDEA需要进行配置JDK。 
   1. 打开IntelliJ IDEA，单击"Configure"下拉按钮。
      图2Choosing Configure   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904325.png) 
   
   2. 在"Configure"下拉菜单中单击"Project Defaults"。
      图3ChoosingProject Defaults   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904346.png) 
   
   3. 在"Project Defaults"菜单中选择"Project Structure"。
      图4Project Defaults   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904367.png) 
   
   4. 在打开的"Project Structure"页面中，选择"SDKs"，单击绿色加号添加JDK。
      图5添加JDK   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904343.png) 
   
   5. 在弹出的"Select Home Directory for JDK"窗口，选择对应的JDK目录，然后单击"OK"。
      图6选择JDK目录   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001218668054.png) 
   
   6. 完成JDK选择后，单击"OK"完成配置。
      图7完成JDK配置   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001218508112.png) 
   
   
   
   
3. （可选）如果导入Scala语言开发样例工程，还需要在IntelliJ IDEA中安装Scala插件。 
   1. 在"Configure"下拉菜单中，单击"Plugins"。
      图8Plugins   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904382.png) 
   
   2. 在"Plugins"页面，选择"Install plugin from disk"。
      图9Install plugin from disk   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904336.png) 
   
   3. 在"Choose Plugin File"页面，选择对应版本的Scala插件包，单击"OK"。
      图10choose plugin File   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904342.png) 
   
   4. 在"Plugins"页面，单击"Apply"安装Scala插件。
   
   5. 在弹出的"Platform and Plugin Updates"页面，单击"Restart"，使配置生效。
      图11Platform and Plugin Updates   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904364.png) 
   
   
   
   
4. 将Java样例工程导入到IDEA中。 
   1. 打开IntelliJ IDEA。在"Quick Start"页面选择"Import Project"。 或者，针对已使用过的IDEA工具，您可以从IDEA主界面直接添加。选择"File \> Import project..."导入工程。
      图12Import Project（Quick Start页面）   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904338.png) 
   
   2. 选择需导入的样例工程路径，然后单击"OK"。
      图13Select File or Directory to Import   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904323.png) 
   
   3. 选择从已存在的源码创建工程，然后单击"Next"。
      图14Create project from existing sources   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904298.png) 
   
   4. 确认导入路径和工程名称，单击"Next"。
      图15Import Project   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904365.png) 
   
   5. 确认导入工程的root目录，默认即可，单击"Next"。
      图16Import Project   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904381.png) 
   
   6. 确认IDEA自动识别的依赖库以及建议的模块结构，默认即可，单击"Next"。
   
   7. 确认工程所用JDK，然后单击"Next"。
      图17Select project SDK   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001218348316.png) 
   
   8. 导入结束，单击"Finish"，IDEA主页显示导入的样例工程。
      图18导入结束   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904339.png)
      图19已导入工程   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904357.png) 
   
   
   
   
5. 导入样例工程依赖的Jar包。 
   如果通过开源镜像站方式获取的样例工程代码，在配置好Maven后， 相关依赖jar包将自动下载，不需手动添加。
   ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
   当样例代码使用其他FusionInsight组件时，例如Kafka等，请去对应FusionInsight组件的服务端安装目录查找并添加依赖包。样例工程对应的依赖包详情，请参见[参考信息]。
   
   
6. （可选）如果导入Scala语言开发的样例程序，还需要为工程设置语言。 
   1. 在IDEA主页，选择"File\>Project Structures..."进入"Project Structure"页面。
   
   2. 选择"Modules"，选中工程名称，然后右键选择"Add \> Scala"。
      图20选择Scala语言   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904387.png) 
   
   3. 当IDEA可以识别出Scala SDK时，在设置界面，选择编译的依赖jar包，然后单击"OK"应用设置
      图21Add Scala Support   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904374.png) 
   
   4. 当系统无法识别出Scala SDK时，需要自行创建。
      1. 单击"Create..."。
         图22Create...   
         ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904335.png) 
      
      2. 在"Select JAR's for the new Scala SDK"页面单击"Browse..."。
         图23Select JAR's for the new Scala SDK   
         ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904286.png) 
      
      3. 在"Scala SDK files"页面选择scala sdk目录，单击"OK"。
         图24Scala SDK files   
         ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904353.png) 
       
   
   5. 设置成功，单击"OK"保存设置。
      图25设置成功   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904302.png) 
   
   
   
   
7. 设置IDEA的文本文件编码格式，解决乱码显示问题。 
   1. 在IDEA首页，选择"File \> Settings..."。
      图26选择Settings   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904316.png) 
   
   2. 编码配置。
      1. 在"Settings"页面，展开"Editor"，选择"File Encodings"。
      
      2. 分别在右侧的"IDE Encoding"和"Project Encoding"的下拉框中，选择"UTF-8"。
      
      3. 单击"Apply"应用配置。
      
      4. 单击"OK"完成编码配置。
      
      
      图27Settings   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263904368.png) 
   
   
   ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 请从Flink服务端安装目录获取相关的依赖包。
   
   - 请从Kafka环境中获取Kafka依赖包。
   
   - 具体依赖包请查看[参考信息]。
    
   
   
8. 配置Maven。 
   1. 参考[配置华为开源镜像仓](https://support.huaweicloud.com/devg3-mrs/mrs_07_010002.html#mrs_07_010002__section13196125861611)章节描述，增加开源镜像仓地址等配置信息到本地Maven的"setting.xml"配置文件。
   
   2. 修改完成后，在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"文件放置目录   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001150491507.png) 
   
   3. 单击"Maven home directory"右侧的下拉菜单，选择Maven的安装路径。
   
   4. 单击"Apply"并单击"OK"。
   
   5. 在IntelliJ IDEA主界面右侧，单击"Maven Projects"，在"Maven Projects"界面执行"*项目名称* \> Lifecycle"目录下的"clean"和"compile"脚本。
      图29Maven Projects界面   
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001150571623.png) 
   
   
   
   
 
 #### 参考信息
Flink客户端lib目录、opt目录中都有flink jar包，其中lib目录中默认是flink核心jar包，opt目录中是对接外部组件的jar包（例如flink-connector-kafka\*.jar）,若应用开发中需要请手动复制相关jar包到lib目录中。
针对Flink提供的几个样例工程，其对应的运行依赖包如下：
- DataStream程序样例工程（Java/Scala）
  - flink-dist_\*.jar
    ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
    flink-dist_\*.jar可在Flink的客户端或者服务端安装路径的lib目录下获取。
    
   

- 向Kafka生产并消费数据程序样例工程（Java/Scala）
  - kafka-clients-\*.jar
  
  - flink-connector-kafka_\*.jar
  
  
  ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
  - 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
  
  
  ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
  - 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
  
  
  ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
  - 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集群。
    
 
