包 org.apache.flink.api.java.io.jdbc 不存在

Package org.apache.flink.api.java.io.jdbc does not exist

我想在 Apache Flink 应用程序中使用 JDBC 连接器。但是maven没有找到flink JDBC包。 我在“build-jar”部分的 pom.xml 中添加了以下依赖项:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-jdbc_2.11</artifactId>
    <version>1.13.1</version>
</dependency>

jar文件由maven下载,在本地maven目录下可用。 我的代码看起来像这样。

// standard, not relevant flink imports
import org.apache.flink.api.java.io.jdbc.JDBCInputFormat;
import org.apache.flink.api.java.io.jdbc.JDBCOutputFormat;


public class BatchLayerExec {

    public static void main( final String[] args ) {

        //Definition of Strings for the connection to the database

        try {
            ExecutionEnvironment environment = ExecutionEnvironment.getExecutionEnvironment();

            final TypeInformation<?>[] fieldTypes =
                    new TypeInformation<?>[] { ... };

            final RowTypeInfo rowTypeInfo = new RowTypeInfo(fieldTypes);

            //Define Input Format Builder
            JDBCInputFormat.JDBCInputFormatBuilder inputBuilder = JDBCInputFormat
                .buildJDBCInputFormat()
                .setDrivername(driverName)
                .setDBUrl(dbURL + sourceDB)
                .setQuery(selectQuery)
                .setRowTypeInfo(rowTypeInfo)
                .setUsername(dbUser)
                .setPassword(dbPassword)
                .setRowTypeInfo(rowTypeInfo);

            DataSet<Row> sourceTable = environment.createInput(inputBuilder.finish());
 
            // Transformation
            // ...

            // Print for debugging
            transformedTable.print();

            // Output transformed data to output table
            //Define Output Format Builder
            JDBCOutputFormat.JDBCOutputFormatBuilder outputBuilder = JDBCOutputFormat
                    .buildJDBCOutputFormat()
                    .setDrivername(driverName)
                    .setDBUrl(dbURL + sourceDB)
                    .setQuery(insertQuery)
                    .setSqlTypes(new int[] { ... })
                    .setUsername(dbUser)
                    .setPassword(dbPassword);

            //Define dataSink
            transformedTable.output(outputBuilder.finish());

            environment.execute();

        } catch(final Exception e) {
            System.out.println(e);
        }
    }
}

但是在 mvn clean package -Pbuild-jar 的构建过程中,我收到错误消息: package org.apache.flink.api.java.io.jdbc does not exist。 我在代码中删除了一些不相关的定义和步骤(见评论)。如果您需要更多信息,请发表评论。

我发现软件包 org.apache.flink.api.java.io.jdbc 已被弃用。 导入包 org.apache.flink.connector.jdbc 有效。

编辑

请注意,这需要将 JDBCInputFormatJDBCOutputFormat 类 更改为 JdbcInputFormatJdbcOutputFormat