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
- 1.flink入门级的4个lab,推荐从datastream api上手,会对flink的底层了解更多: https://training.ververica.com/intro/rideCleansing.html