基于Flink CDC2.3 flink 1.16.1可以跑通官网demo的pom文件,方便后边有?

基于Flink CDC2.3 flink 1.16.1可以跑通官网demo的pom文件,方便后边有需要的人搜索一下?

展开
收起
真的很搞笑 2023-05-30 11:30:18 115 分享 版权
阿里云 AI 助理回答

基于Flink CDC 2.3 和 Flink 1.16.1 的环境,为了能够成功运行官网的 demo,您需要配置一个正确的 pom.xml 文件。以下是根据知识库资料整理出的推荐配置:


1. 基础依赖配置

pom.xml 文件中,首先需要引入 Flink CDC 和相关连接器的核心依赖。以下是一个基础的依赖配置示例:

<dependencies>
    <!-- Flink CDC PostgreSQL Connector -->
    <dependency>
        <groupId>com.ververica</groupId>
        <artifactId>flink-connector-postgres-cdc</artifactId>
        <version>2.3.0</version>
    </dependency>

    <!-- Flink Streaming Java Core -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_2.12</artifactId>
        <version>1.16.1</version>
        <scope>provided</scope>
    </dependency>

    <!-- Flink Table API -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-table-api-java-bridge_2.12</artifactId>
        <version>1.16.1</version>
        <scope>provided</scope>
    </dependency>

    <!-- Debezium Core (用于CDC功能) -->
    <dependency>
        <groupId>io.debezium</groupId>
        <artifactId>debezium-core</artifactId>
        <version>1.9.0.Final</version>
    </dependency>

    <!-- PostgreSQL JDBC Driver -->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.3.1</version>
    </dependency>
</dependencies>

2. 引擎版本与依赖作用域

  • 引擎版本:确保 ${vvr.version}${flink.version} 与您的运行环境一致。例如,如果您使用的是 vvr-6.0.7-flink-1.16 引擎,则对应的 Flink 版本为 1.16.1
  • 作用域声明:对于运行时由引擎提供的依赖(如 Flink 核心库),需要将作用域设置为 provided,以避免重复打包。

3. 构建工具配置

pom.xml 中添加构建插件和仓库配置,确保依赖能够正确解析:

<build>
    <plugins>
        <!-- Maven Compiler Plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <!-- Maven Shade Plugin (用于打包) -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <!-- 合并 META-INF/services 文件 -->
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<repositories>
    <!-- 阿里云 Maven 仓库 -->
    <repository>
        <id>aliyun</id>
        <url>https://maven.aliyun.com/repository/public</url>
    </repository>
</repositories>

4. 注意事项

  • 兼容性检查:确保 Flink CDC 版本与 Flink 引擎版本兼容。例如,Flink CDC 2.3 兼容 Flink 1.16.x 系列。
  • META-INF 合并:如果项目中使用了多个连接器,请确保在打包时合并 META-INF/services 文件,否则可能导致运行时冲突。
  • 本地调试问题:如果在本地调试时遇到问题,可以尝试调整 pom.xml 中的依赖版本或删除冲突的依赖项(如 flink-connector-base)。

5. 完整示例

以下是完整的 pom.xml 示例文件,供参考:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>flink-cdc-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- Flink CDC PostgreSQL Connector -->
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-postgres-cdc</artifactId>
            <version>2.3.0</version>
        </dependency>

        <!-- Flink Streaming Java Core -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_2.12</artifactId>
            <version>1.16.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- Flink Table API -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-java-bridge_2.12</artifactId>
            <version>1.16.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- Debezium Core -->
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-core</artifactId>
            <version>1.9.0.Final</version>
        </dependency>

        <!-- PostgreSQL JDBC Driver -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.3.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>aliyun</id>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>
</project>

通过以上配置,您可以顺利运行基于 Flink CDC 2.3 和 Flink 1.16.1 的官方 demo,并为后续开发提供基础支持。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

大数据领域前沿技术分享与交流,这里不止有技术干货、学习心得、企业实践、社区活动,还有未来。

还有其他疑问?
咨询AI助理