更新时间:2024-08-05 GMT+08:00

导入并配置Flink样例工程

操作场景

Flink针对多个场景提供样例工程,包含Java样例工程和Scala样例工程等,帮助客户快速学习Flink工程。

针对Java和Scala不同语言的工程,其导入方式相同。

以下操作步骤以导入Java样例代码为例。操作流程如图1所示。

图1 导入样例工程流程

操作步骤

  1. 参考获取MRS应用开发样例工程,获取样例代码解压目录中“src\flink-examples”目录下的样例工程文件夹“flink-examples-normal”。

    • 在安全模式下,获取“src\flink-examples”下的样例工程flink-examples-security。
    • 在普通模式下,获取“src\flink-examples”下的样例工程flink-examples-normal。

  2. 在导入样例工程之前,IntelliJ IDEA需要进行配置JDK。

    1. 打开IntelliJ IDEA,单击“Configure”下拉按钮。
      图2 Choosing Configure
    2. “Configure”下拉菜单中单击“Project Defaults”
      图3 Choosing Project Defaults
    3. “Project Defaults”菜单中选择“Project Structure”
      图4 Project Defaults
    4. 在打开的“Project Structure”页面中,选择“SDKs”,单击绿色加号添加JDK。
      图5 添加JDK
    5. 在弹出的“Select Home Directory for JDK”窗口,选择对应的JDK目录,然后单击“OK”
      图6 选择JDK目录
    6. 完成JDK选择后,单击“OK”完成配置。
      图7 完成JDK配置

  3. (可选)如果导入Scala语言开发样例工程,还需要在IntelliJ IDEA中安装Scala插件。

    1. “Configure”下拉菜单中,单击“Plugins”
      图8 Plugins
    2. “Plugins”页面,选择“Install plugin from disk”
      图9 Install plugin from disk
    3. “Choose Plugin File”页面,选择对应版本的Scala插件包,单击“OK”
      图10 choose plugin File
    4. “Plugins”页面,单击“Apply”安装Scala插件。
    5. 在弹出的Platform and Plugin Updates页面,单击“Restart”,使配置生效。
      图11 Platform and Plugin Updates

  4. 将Java样例工程导入到IDEA中。

    1. 打开IntelliJ IDEA。在“Quick Start”页面选择“Import Project”

      或者,针对已使用过的IDEA工具,您可以从IDEA主界面直接添加。选择File > Import project...导入工程。

      图12 Import Project(Quick Start页面)
    2. 选择需导入的样例工程路径,然后单击“OK”
      图13 Select File or Directory to Import
    3. 选择从已存在的源码创建工程,然后单击“Next”
      图14 Create project from existing sources
    4. 确认导入路径和工程名称,单击“Next”
      图15 Import Project
    5. 确认导入工程的root目录,默认即可,单击“Next”
      图16 Import Project
    6. 确认IDEA自动识别的依赖库以及建议的模块结构,默认即可,单击“Next”
    7. 确认工程所用JDK,然后单击“Next”
      图17 Select project SDK
    8. 导入结束,单击“Finish”,IDEA主页显示导入的样例工程。
      图18 导入结束
      图19 已导入工程

  5. 导入样例工程依赖的Jar包。

    如果通过开源镜像站方式获取的样例工程代码,在配置好Maven后, 相关依赖jar包将自动下载,不需手动添加。

    当样例代码使用其他FusionInsight组件时,例如Kafka等,请去对应FusionInsight组件的服务端安装目录查找并添加依赖包。样例工程对应的依赖包详情,请参见参考信息

  6. (可选)如果导入Scala语言开发的样例程序,还需要为工程设置语言。

    1. 在IDEA主页,选择File>Project Structures...进入“Project Structure”页面。
    2. 选择“Modules”,选中工程名称,然后右键选择Add > Scala
      图20 选择Scala语言
    3. 当IDEA可以识别出Scala SDK时,在设置界面,选择编译的依赖jar包,然后单击“OK”应用设置
      图21 Add Scala Support
    4. 当系统无法识别出Scala SDK时,需要自行创建。
      1. 单击“Create...”
        图22 Create...
      2. “Select JAR's for the new Scala SDK”页面单击“Browse...”
        图23 Select JAR's for the new Scala SDK
      3. “Scala SDK files”页面选择scala sdk目录,单击“OK”
        图24 Scala SDK files
    5. 设置成功,单击“OK”保存设置。
      图25 设置成功

  7. 设置IDEA的文本文件编码格式,解决乱码显示问题。

    1. 在IDEA首页,选择File > Settings...
      图26 选择Settings
    2. 编码配置。
      1. “Settings”页面,展开“Editor”,选择“File Encodings”
      2. 分别在右侧的“IDE Encoding”“Project Encoding”的下拉框中,选择“UTF-8”
      3. 单击“Apply”应用配置。
      4. 单击“OK”完成编码配置。
      图27 Settings
    • 请从Flink服务端安装目录获取相关的依赖包。
    • 请从Kafka环境中获取Kafka依赖包。
    • 具体依赖包请查看参考信息

  8. 配置Maven。

    1. 参考配置华为开源镜像仓章节描述,增加开源镜像仓地址等配置信息到本地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”文件放置目录
    3. 单击“Maven home directory”右侧的下拉菜单,选择Maven的安装路径。
    4. 单击“Apply”并单击“OK”。
    5. 在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目录下获取。

  • 向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集群。