前言
本文环境版本
zookeeper 3.8.2
hadoop 2.10.2
hive 2.3.9
hbase 2.5.5
flink 1.17.1
scala 2.12
phoenix 5.1.3
官方文档
https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/dev/table/overview/
连接Hive
https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/connectors/table/hive/overview/
依赖搜索
https://developer.aliyun.com/mvn/search
阿里云Maven
https://developer.aliyun.com/mvn/guide
类搜索
https://www.classnotfound.com.cn/
版本定义
1 | <properties> |
Flink相关Jar
创建项目
1 | mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.17.1 |
默认会添加以下依赖
1 | <dependency> |
Table+DataStream
APIs you want to use | Dependency you need to add |
---|---|
DataStream | flink-streaming-java |
DataStream with Scala | flink-streaming-scala_2.12 |
Table API | flink-table-api-java |
Table API with Scala | flink-table-api-scala_2.12 |
Table API + DataStream | flink-table-api-java-bridge |
Table API + DataStream with Scala | flink-table-api-scala-bridge_2.12 |
以下依赖不再依赖Scala版本
flink-clients_${scala.binary.version} => flink-clients
flink-table-api-java-bridge_${scala.binary.version} => flink-table-api-java-bridge
以下被移除
- flink-table-planner-blink_${scala.binary.version} 新版本已经移除,最后支持的Flink版本是1.13.6
Flink的useBlinkPlanner选项是用于启用Blink批处理和流处理的Planner。
Blink是Flink的新一代查询引擎,它提供了更高的性能和更好的稳定性。
useBlinkPlanner选项的作用是告诉Flink使用Blink Planner来解析和优化查询计划。
通过启用Blink Planner,您可以获得更好的查询性能和更高级的查询优化功能。
新版本已经没有该方法,默认使用新的Blink查询引擎。
必装的Jar
1 | <!-- flink核心API --> |
Hive
添加依赖
在Spark连接Hive导入相关maven依赖时
1 | <!-- Hive Connector的支持--> |
出现以下错误:
org.pentaho:pentaho-aggdesigner-algorithm:pom:5.1.5-jhyde was not found in https://maven.aliyun.com/repository/public during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of alimaven has elapsed or updates are forced
是因为这个包不在阿里云公共maven镜像仓库上,需要添加一个新的镜像仓库,修改maven的settings.xml
1 | <!-- 添加这个镜像仓库在阿里云公共仓库前面 --> |
之后重新导入依赖即可。
如果是idea开发,需要重启idea,刷新依赖即可。
或者项目中(推荐)
1 | <repositories> |
服务器上移动planner jar
Move the jar flink-table-planner_2.12-1.17.1.jar
located in FLINK_HOME/opt
to FLINK_HOME/lib
and
move out the jar flink-table-planner-loader-1.17.1.jar
from FLINK_HOME/lib
.
Please refer to FLINK-25128 for more details. You can use the following commands to complete the work:
1 | mv $FLINK_HOME/opt/flink-table-planner_2.12-1.17.1.jar $FLINK_HOME/lib/flink-table-planner_2.12-1.17.1.jar |
NOTE: Such extra planner jar moving is only needed when using Hive dialect or HiveServer2 endpoint, but this is the recommended setup for Hive integration.
连接Hive测试
1 | beeline -n hive -u "jdbc:hive2://hdp01:10000/yxdp_ys;principal=hdfs/hdp01@HADOOP.COM" |
连接Kafka
1 | <dependency> |
新版本
1 | <dependency> |
测试
1 | import org.apache.flink.api.common.serialization.SimpleStringSchema; |
Flink1.12版本备份
这里记录一下旧版本的依赖
1 |
|
Flink1.17版本配置
1 |
|
Flink1.13.6版本配置
1 |
|
报错
Could not resolve substitution to a value: ${akka.stream.materializer}
解决方法
1 | <build> |
测试
yarn-application模式
1 | flink run-application -t yarn-application \ |
Local模式
1 | flink run \ |
服务信息查看
查看服务名
1 | #基本 |
获取服务的启动用户
1 | ps -fp 14399 |
获取PID和服务名
1 | jps | awk -F ' ' '{print $1, $2}' | while read pid name; do |
获取服务名及启动用户
1 | jps | awk -F ' ' '{print $1, $2}' | while read pid name; do |