文章目录
- 1. Flink教程
- 1.1. [诸葛子房的博客基础篇](https://www.cnblogs.com/zgzf/p/10794473.html)
- 1.2. [诸葛子房的博客(新)](https://blog.csdn.net/weixin_43291055/category_9115592.html)
- 1.3. [Flink中文社区](https://www.slidestalk.com/FlinkChina)
- 1.4. [Flink系列文章zhisheng](http://mp.weixin.qq.com/mp/homepage?__biz=MzIxMTE0ODU5NQ==&hid=5&sn=ff5718eced55d78a92ee79fc887acd45&scene=18#wechat_redirect)
- 1.5. [云邪的博客](http://mp.weixin.qq.com/mp/homepage?__biz=MzUxNjkzMzc0MA==&hid=1&sn=f98618cc95a4e1e69474ae106aebe065&scene=18#wechat_redirect)
- 2. 客户端操作
- 3. 用IDEA创建Flink项目的步骤(`scala语言`,`sbt构建工具`)
- 4. [sbt的assembly插件使用(打包所有依赖)](https://www.cnblogs.com/zhangqingping/p/4997324.html)
- 5. 寄语:莫见长安行乐处,空令岁月易蹉跎
1. Flink教程
1.1. 诸葛子房的博客基础篇
1.2. 诸葛子房的博客(新)
1.3. Flink中文社区
1.4. Flink系列文章zhisheng
1.5. 云邪的博客
2. 客户端操作
3. 用IDEA创建Flink项目的步骤(scala语言
,sbt构建工具
)
-
创建Flink模板项目
sbt new tillrohrmann/flink-project.g8
-
修改项目中
build.properties
中的sbt版本为当前电脑上一致的版本 -
导入项目到idea中
3.1. maven创建flink项目
mvn archetype:generate
-DarchetypeGroupId=org.apache.flink
-DarchetypeArtifactId=flink-quickstart-java
-DarchetypeVersion=1.10.0
4. sbt的assembly插件使用(打包所有依赖)
4.1. assembly github链接
4.2. sbt-assembly, 部署 fat jars(中文)
4.3. 使用插件sbt-assembly
4.4. sbt-assembly task 的关键字
-
assemblyJarName
- 指定jar包的名字
assemblyJarName in assembly := "something.jar"
- 指定jar包的名字
-
test
- 组装过程中跳过测试
test in assembly := {}
- 组装过程中跳过测试
-
mainClass
- 指定主类
mainClass in assembly := Some("com.example.Main")
- 指定主类
-
assemblyOutputPath
- 指定输出路径
- 指定输出路径
-
assemblyMergeStrategy
- 路径名到合并策略的映射
-
assemblyExcludedJars
- 排除jar
-
assemblyOption
- exclude Scala library from assembly
assembly / assemblyOption := (assembly / assemblyOption).value.copy(includeScala = false)
- exclude Scala library from assembly
-
assembledMappings
4.5. 将插件应用于多项目build.sbt
name := "AssemblyTestProject"
version := "1.0.0"
scalaVersion := "2.11.8"
lazy val commonSettings = Seq(
version:= "2.0.0",
organization:= "com.xiaofan",
scalaVersion:="2.12.6",
// 组装过程中跳过测试
test in assembly :={}
)
lazy val app = (project in file("app"))
.settings(commonSettings: _*)
.settings(
// 指定主类
mainClass in assembly := Some("com.xiaofan.Main")
)
lazy val utils = (project in file("utils"))
.settings(commonSettings: _*)
.settings(
// 设置jar的名称
assemblyJarName in assembly := "utils.jar"
)
4.6. 合并策略
- 第三方合并策略插件
4.7. 常见解决jar包冲突的方法
-
如果要排除已经属于容器的JAR文件(例如Spark),请考虑将依赖库的作用域限定为"provided"配置:
libraryDependencies ++=Seq( "org.apache.spark"%%"spark-core"%"0.8.0-incubating"%"provided", "org.apache.hadoop"%"hadoop-client"%"2.0.0-cdh4.4.0"%"provided")
-
不排除特定传递因子
libraryDependencies ++=Seq( ("org.apache.spark"%%"spark-core"%"0.8.0-incubating"). exclude("org.mortbay.jetty", "servlet-api"). exclude("commons-beanutils", "commons-beanutils-core"). exclude("commons-collections", "commons-collections"). exclude("commons-logging", "commons-logging"). exclude("com.esotericsoftware.minlog", "minlog") )