Flink 源码编译

Posted by leonardBang's Blog on April 27, 2019

1.源码编译

1.1 编译工具

Flink 代码使用 maven 构建项目,编译代码的时候 maven 默认会根据当前用户下的 “~/.m2/settings.xml”文件中的配置信息下载 Flink 的依赖包, 也可以在 mvn 命令中增加“– settings=${your_maven_settings_file}”来指定 maven settings 文件的位置

1.2 编译

(1)编译并安装到本地:

(a)删除已有的build,编译flink binary,并把flink binary安装在maven的local repository: mvn clean install -DskipTests (b) 不编译 tests、QA plugins 和 JavaDocs,因此编译要更快一些: mvn clean install -DskipTests -Dfast

(2)只编译打包

(a)如果不想安装到local repository,只需要执行: mvn clean package -DskipTests (b) 不编译 tests、QA plugins 和 JavaDocs,因此编译要更快一些: mvn clean package -DskipTests -Dfast

(3)指定haddop版本

编译并安装:mvn clean install -DskipTests -Dhadoop.version=2.6.1 或者 编译打包:```mvn clean package -DskipTests -Dhadoop.version=2.6.1 ``

(4maven 多线程编译打包(验证过,-T 2C 快一半)

mvn clean package -T 1C -Dmaven.compile.fork=true -Dmaven.test.skip=true

-T 1C 代表每个CPU核心跑一个工程。 -Dmaven.test.skip=true 代表跳过测试 -Dmaven.compile.fork=true 使用多线程编译

2.源码阅读

(1)常用快捷键

(1)查看继承关系 ctrl + H (2)查看UML类图,Alt+command+U / comand + D 也可以右键查看 (3)查看所有方法,command + 7/ command + 1 (4)查看javadoc,ctrl + j

(2)常用功能

(1) debug时使用evaluate expression非常有用 (2) intelij version control 可以查看最新的的commit,其中页面左边是之前的commit,右边是最新的commit (3) git diff old_cm new_cm 时,红色的是相对老版本减少的,绿色的是新版本增加的, git diff old_cm head/git diff old_cm 这两个等价,默认比较old_cm和当前cm的差距 (4) conflict时,head是 «««< HEAD codexxx =======是 当前分支的内容 , ======= codexx »»»> FLINK-13611 是 另外一个分支的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<<<<<<< HEAD
    val tableName = tablePath.mkString(".")
    val table = tableEnv.scan(tablePath: _*)

    val schema = table.getSchema
=======
    val planner = getPlanner(tableEnv)
    if (planner.isInstanceOf[StreamPlanner]) {
      throw new TableException("Streaming is not supported.")
    }

    val tableName = tablePath.mkString(".")
    val sourceTable = tableEnv.scan(tablePath: _*)

    val schema = sourceTable.getSchema
>>>>>>> FLINK-13611

3.源码入门case