包 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
有效。
编辑
请注意,这需要将 JDBCInputFormat
和 JDBCOutputFormat
类 更改为 JdbcInputFormat
和 JdbcOutputFormat
。
我想在 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
有效。
编辑
请注意,这需要将 JDBCInputFormat
和 JDBCOutputFormat
类 更改为 JdbcInputFormat
和 JdbcOutputFormat
。