
# 导入并配置Flink样例工程
#### 操作场景
Flink针对多个场景提供样例工程，包含Java样例工程和Scala样例工程等，帮助客户快速学习Flink工程。
针对Java和Scala不同语言的工程，其导入方式相同。
以下操作步骤以导入Java样例代码为例。操作流程如[图1]所示。
图1导入样例工程流程   
![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252214060.png)
#### 操作步骤
1. 参考[获取MRS应用开发样例工程](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_010002.html)，获取样例代码解压目录中"src\\flink-examples"目录下的样例工程文件夹"flink-examples-normal"。
   
   ![](https://support.huaweicloud.com/devg-lts-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/devg-lts-mrs/zh-cn_image_0000001252373776.png "点击放大") 
   
   2. 在"Configure"下拉菜单中单击"Project Defaults"。
      图3ChoosingProject Defaults   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299053045.png "点击放大") 
   
   3. 在"Project Defaults"菜单中选择"Project Structure"。
      图4Project Defaults   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252692814.png "点击放大") 
   
   4. 在打开的"Project Structure"页面中，选择"SDKs"，单击绿色加号添加JDK。
      图5添加JDK   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299053033.png "点击放大") 
   
   5. 在弹出的"Select Home Directory for JDK"窗口，选择对应的JDK目录，然后单击"OK"。
      图6选择JDK目录   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252692802.png) 
   
   6. 完成JDK选择后，单击"OK"完成配置。
      图7完成JDK配置   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252692822.png "点击放大") 
   
   
   
   
3. （可选）如果导入Scala语言开发样例工程，还需要在IntelliJ IDEA中安装Scala插件。 
   1. 在"Configure"下拉菜单中，单击"Plugins"。
      图8Plugins   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299213069.png "点击放大") 
   
   2. 在"Plugins"页面，选择"Install plugin from disk"。
      图9Install plugin from disk   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001298932437.png "点击放大") 
   
   3. 在"Choose Plugin File"页面，选择对应版本的Scala插件包，单击"OK"。
      图10choose plugin File   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299213065.png "点击放大") 
   
   4. 在"Plugins"页面，单击"Apply"安装Scala插件。
   
   5. 在弹出的"Platform and Plugin Updates"页面，单击"Restart"，使配置生效。
      图11Platform and Plugin Updates   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252373788.png "点击放大") 
   
   
   
   
4. 将Java样例工程导入到IDEA中。 
   1. 打开IntelliJ IDEA。在"Quick Start"页面选择"Import Project"。 或者，针对已使用过的IDEA工具，您可以从IDEA主界面直接添加。选择"File \> Import project..."导入工程。
      图12Import Project（Quick Start页面）   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252692810.png "点击放大") 
   
   2. 选择需导入的样例工程路径，然后单击"OK"。
      图13Select File or Directory to Import   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299053053.png "点击放大") 
   
   3. 选择从已存在的源码创建工程，然后单击"Next"。
      图14Create project from existing sources   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299093577.png "点击放大") 
   
   4. 确认导入路径和工程名称，单击"Next"。
      图15Import Project   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001298932433.png "点击放大") 
   
   5. 确认导入工程的root目录，默认即可，单击"Next"。
      图16Import Project   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299053049.png "点击放大") 
   
   6. 确认IDEA自动识别的依赖库以及建议的模块结构，默认即可，单击"Next"。
   
   7. 确认工程所用JDK，然后单击"Next"。
      图17Select project SDK   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001298932441.png "点击放大") 
   
   8. 导入结束，单击"Finish"，IDEA主页显示导入的样例工程。
      图18导入结束   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299053037.png "点击放大")
      图19已导入工程   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299213049.png) 
   
   
   
   
5. 导入样例工程依赖的Jar包。 
   如果通过开源镜像站方式获取的样例工程代码，在配置好Maven后， 相关依赖jar包将自动下载，不需手动添加。
   ![](https://support.huaweicloud.com/devg-lts-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/devg-lts-mrs/zh-cn_image_0000001298932453.png "点击放大") 
   
   3. 当IDEA可以识别出Scala SDK时，在设置界面，选择编译的依赖jar包，然后单击"OK"应用设置
      图21Add Scala Support   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299093573.png "点击放大") 
   
   4. 当系统无法识别出Scala SDK时，需要自行创建。
      1. 单击"Create..."。
         图22Create...   
         ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252533556.png "点击放大") 
      
      2. 在"Select JAR's for the new Scala SDK"页面单击"Browse..."。
         图23Select JAR's for the new Scala SDK   
         ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252373792.png "点击放大") 
      
      3. 在"Scala SDK files"页面选择scala sdk目录，单击"OK"。
         图24Scala SDK files   
         ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252533536.png "点击放大") 
       
   
   5. 设置成功，单击"OK"保存设置。
      图25设置成功   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252373780.png "点击放大") 
   
   
   
   
7. 设置IDEA的文本文件编码格式，解决乱码显示问题。 
   1. 在IDEA首页，选择"File \> Settings..."。
      图26选择Settings   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252533540.png) 
   
   2. 编码配置。
      1. 在"Settings"页面，展开"Editor"，选择"File Encodings"。
      
      2. 分别在右侧的"IDE Encoding"和"Project Encoding"的下拉框中，选择"UTF-8"。
      
      3. 单击"Apply"应用配置。
      
      4. 单击"OK"完成编码配置。
      
      
      图27Settings   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299093589.png "点击放大") 
   
   
   ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 请从Flink服务端安装目录获取相关的依赖包。
   
   - 请从Kafka环境中获取Kafka依赖包。
   
   - 具体依赖包请查看[样例工程运行依赖包参考信息]。
    
   
   
8. 配置Maven。 
   1. 参考[配置华为开源镜像仓](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_010002.html#mrs_07_010002__zh-cn_topic_0000001918070240_zh-cn_topic_0000001298931189_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/devg-lts-mrs/zh-cn_image_0000001252214064.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/devg-lts-mrs/zh-cn_image_0000001298932445.png) 
   
   
   
   
 
 #### 样例工程运行依赖包参考信息
Flink客户端lib目录、opt目录中都有flink jar包，其中lib目录中默认是flink核心jar包，opt目录中是对接外部组件的jar包（例如flink-connector-kafka\*.jar）,若应用开发中需要请手动复制相关jar包到lib目录中。
针对Flink提供的几个样例工程，其对应的运行依赖包如下：
表1样例工程运行依赖包 
| 样例工程                                                                                                                                                                                                           | 依赖包                                                                                                                                                                                                                                                                                                                                                                                                                   | 依赖包获取地址                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| - DataStream程序  - 异步Checkpoint机制程序           | flink-dist_\*.jar                                                                                                                                                                                                                                                                                                                                                                                                     | 可在Flink的客户端或者服务端安装路径的lib目录下获取。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| - 使用Flink Jar提交SQL作业程序  - FlinkServer REST API程序   | - flink-dist_\*.jar  - flink-table_\*.jar                                                                                                                                                                                                               | 可在Flink的客户端或者服务端安装路径的lib目录下获取。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 向Kafka生产并消费数据程序                                                                                                                                                                                                | - kafka-clients-\*.jar  - flink-connector-kafka_\*.jar                                                                                                                                                                                           | - kafka-clients-\*.jar由Kafka组件发布提供，可在Kafka组件客户端或者服务端安装路径下的lib目录下获取。  - flink-connector-kafka_\*.jar可在Flink客户端或者服务端安装路径的opt目录下获取。                                                                                                                                                                                      |
| pipeline程序                                                                                                                                                                                                     | - flink-connector-netty_\*.jar  - flink-dist_\*.jar                                                                                                                                                                                                  | - flink-connector-netty_\*.jar可在二次开发样例代码编译后产生的lib文件夹下获取。  - flink-dist_\*.jar可在Flink的客户端或者服务端安装路径的lib目录下获取。                                                                                                                                                                                                   |
| Stream SQL Join程序                                                                                                                                                                                              | - kafka-clients-\*.jar  - flink-connector-kafka_\*.jar  - flink-dist_\*.jar  - flink-table_\*.jar         | - kafka-clients-\*.jar由Kafka组件发布提供，可在Kafka组件客户端或者服务端安装路径下的lib目录下获取。  - flink-connector-kafka_\*.jar可在Flink客户端或者服务端安装路径的opt目录下获取。    - flink-dist_\*.jar、flink-table_\*.jar可在Flink的客户端或者服务端安装路径的lib目录下获取。   |
| Flink读写HBase程序                                                                                                                                                                                                 | - flink-connector-hbase\*.jar  - flink-dist_\*.jar  - flink-table_\*.jar  - hbase-clients-\*.jar   | - flink-connector-hbase_\*.jar可在Flink客户端或者服务端安装路径的opt目录下获取。  - flink-dist_\*.jar、flink-table_\*.jar可在Flink的客户端或者服务端安装路径的lib目录下获取。  - hbase-clients-\*.jar由HBase组件发布提供，可在HBase组件客户端或者服务端安装路径下的lib目录下获取。                                               |
| Flink读写Hudi程序                                                                                                                                                                                                  | hbase-unsafe-\*.jar                                                                                                                                                                                                                                                                                                                                                                                                   | 可在二次开发样例代码编译后产生的lib文件夹下获取。                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
