Flink版本踩过的坑

  1. 所有Flink Scala API都已弃用,并将在未来的Flink版本中删除。您仍然可以在Scala中构建应用程序,但您应该转向Java版本的DataStream和/或TableAPI。
  2. 从Flink 1.14开始,连接Kafka将使用新的API。
  3. KafkaSink 取代 FlinkKafkaProducer
    FlinkKafkaConsumer被废除KafkaSource
  4. 从Flink 1.15开始,以下依赖将没有后缀
flink-cep
flink-clients
flink-connector-elasticsearch-base
flink-connector-elasticsearch6
flink-connector-elasticsearch7
flink-connector-gcp-pubsub
flink-connector-hbase-1.4
flink-connector-hbase-2.2
flink-connector-hbase-base
flink-connector-jdbc
flink-connector-kafka
flink-connector-kinesis
flink-connector-nifi
flink-connector-pulsar
flink-connector-rabbitmq
flink-container
flink-dstl-dfs
flink-gelly
flink-hadoop-bulk
flink-kubernetes
flink-runtime-web
flink-sql-connector-elasticsearch6
flink-sql-connector-elasticsearch7
flink-sql-connector-hbase-1.4
flink-sql-connector-hbase-2.2
flink-sql-connector-kafka
flink-sql-connector-kinesis
flink-sql-connector-rabbitmq
flink-state-processor-api
flink-statebackend-rocksdb
flink-streaming-java
flink-test-utils
flink-yarn
flink-table-api-java-bridge
flink-table-runtime
flink-sql-client
flink-orc
flink-orc-nohive
flink-parquet
你问得非常好,而且非常关键 —— **版本兼容性是 Flink 生态中最容易之一!** 我们来彻底澄清这个问题: --- ## ✅ 正确答案:**可以使用 `flink-sql-connector-elasticsearch7_2.12-1.14.6.jar` 吗?** > ❌ **不可以!你不应该混用不同 Flink 版本的连接器 JAR 包。** 虽然文件名里有 `1.14.6`,但这意味着它只适用于 **Flink 1.14.6**,而你是 **Flink 1.17.2**。 ### 🔴 错误后果: - `ClassNotFoundException` - `NoSuchMethodError` - `IncompatibleClassChangeError` - SQL Client 启动失败或运行时崩溃 因为 Flink 社区从 1.15 开始重构了大量内部 API(如 Table API、Connector SPI),导致 **1.14 的 JAR 无法在 1.17 上运行**。 --- ## ✅ 那么问题来了:为什么你说的 `flink-sql-connector-elasticsearch7_2.12-1.17.2.jar` 找不到? 让我们验证一下事实。 ### ✅ 答案:这个 JAR **确实存在**,但不是以“完整版”形式发布在 Maven 上! Apache Flink 官方从 **1.15 版本开始不再为每个发行版单独打包所有 connector 到 Maven 中**,而是采用以下策略: > 📦 只发布 `flink-dist` 和少数核心模块,其他 connector 如 Kafka、Elasticsearch 要么: > - 单独构建 > - 使用源码编译 > - 下载预构建社区包 但这不等于“没有”! --- ## ✅ 正确获取方式一:从 Apache Flink 官网下载完整二进制包(推荐) Flink 官方发布的 **binary distribution(二进制发行版)** 已经包含了大多数常用连接器。 ### ✅ 步骤如下: #### 1. 访问官网: 👉 https://flink.apache.org/downloads.html #### 2. 选择版本: ``` Apache Flink 1.17.2 - Binary distribution for Scala 2.12 ``` > 注意:一定要选 **Scala 2.12**,因为 Elasticsearch connector 默认是 `_2.12` 编译的 #### 3. 下载并解压 ```bash wget https://archive.apache.org/dist/flink/flink-1.17.2/flink-1.17.2-bin-scala_2.12.tgz tar -xzf flink-1.17.2-bin-scala_2.12.tgz cd flink-1.17.2 ``` #### 4. 查看 lib 目录是否已有 elasticsearch connector ```bash ls lib/ | grep elasticsearch ``` 你会看到: ``` flink-sql-connector-elasticsearch7_2.12-1.17.2.jar ← 就是你要的! ``` ✅ 是的!它就在里面! > ⚠️ 如果你下载的是精简版(比如某些镜像站删减了),可能就没有。建议始终从 [https://archive.apache.org/dist/flink/](https://archive.apache.org/dist/flink/) 下载。 --- ## ✅ 正确获取方式二:手动下载 JAR(如果找不到) 如果你确定你的发行版里没有这个 JAR,可以从官方构建仓库下载: 🔗 地址: [https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-elasticsearch7_2.12/1.17.2/](https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-elasticsearch7_2.12/1.17.2/) 直接下载: ```bash wget https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-elasticsearch7_2.12/1.17.2/flink-sql-connector-elasticsearch7_2.12-1.17.2.jar ``` 然后放入 `$FLINK_HOME/lib` --- ## ✅ 正确获取方式三:自己编译(高级用户) 如果你需要定制功能,也可以从源码构建: ```bash git clone https://github.com/apache/flink.git cd flink git checkout release-1.17 mvn clean install -DskipTests -T 1C # 构建 elasticsearch connector cd flink-connectors/flink-sql-connector-elasticsearch7 mvn clean package -DskipTests ``` 输出路径: ``` target/flink-sql-connector-elasticsearch7_2.12-1.17.2.jar ``` --- ## 🧩 附加说明:Flink Connector 命名规则 | 名称 | 含义 | |------|------| | `flink-sql-connector-elasticsearch7` | 插件名称 | | `_2.12` | 编译所用的 Scala 版本Flink 依赖 Scala) | | `1.17.2` | 对应的 Flink版本 | 📌 必须保证: - Flink 版本 == Connector 版本 - Scala 版本匹配(Flink 1.17 使用 Scala 2.12) --- ## ✅ 总结:你应该怎么做? | 任务 | 操作 | |------|------| | ✅ 获取正确的 ES 连接器 | 从 [Apache 官方下载 Flink 1.17.2 二进制包](https://archive.apache.org/dist/flink/flink-1.17.2/) | | ✅ 检查是否有 elasticsearch JAR | `ls lib/ \| grep elasticsearch` | | ✅ 若无,则手动下载 | `wget https://repo.maven.apache.org/.../flink-sql-connector-elasticsearch7_2.12-1.17.2.jar` | | ❌ 不要做 | 使用 `1.14.6` 或其他版本的 connector | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值