我想使用flink-jdbc从mysql获取数据。 我在Apache flink网站上看到了一个例子
// Read data from a relational database using the JDBC input format
DataSet<Tuple2<String, Integer> dbData =
env.createInput(
JDBCInputFormat.buildJDBCInputFormat()
.setDrivername("org.apache.derby.jdbc.EmbeddedDriver")
.setDBUrl("jdbc:derby:memory:persons")
.setQuery("select name, age from persons")
.setRowTypeInfo(new RowTypeInfo(BasicTypeInfo.STRING_TYPE_INFO, BasicTypeInfo.INT_TYPE_INFO))
.finish()
);
但是当我尝试编写演示时,我无法找到方法&#39; setRowTypeInfo&#39;。 就像这样
import org.apache.flink.api.common.typeinfo.BasicTypeInfo
import org.apache.flink.api.java.ExecutionEnvironment
import org.apache.flink.api.java.io.jdbc.JDBCInputFormat
import org.apache.flink.api.scala._
/**
* Created by lulijun on 17/7/7.
*/
object FlinkJDBC {
def main(args:Array[String]): Unit = {
val env = ExecutionEnvironment.createLocalEnvironment()
val dbData = env.createInput(
JDBCInputFormat.buildJDBCInputFormat
.setDrivername("com.mysql.jdbc.Driver")
.setDBUrl("XXX")
.setUsername("xxx")
.setPassword("XXX")
.setQuery("select name, age from persons")
.setRowTypeInfo(new Nothing(BasicTypeInfo.STRING_TYPE_INFO, BasicTypeInfo.INT_TYPE_INFO))
.finish)
dbData.print()
env.execute()
}
}
&#34; setRowTypeInfo&#34;方法总是红色,IDEA会提示 &#34;无法解析符号setRowTypeInfo&#34;
我使用的flink-jdbc的jar版本是1.0.0。
<dependencies>
<!-- Use this dependency if you are using the DataSet API -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-scala_2.10</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_2.10</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-jdbc</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
</dependencies>
我搜索了很多,而且大部分人都使用与官方文档完全相同的方法,但在一个人提到了这个问题。 我怀疑我是否使用了错误版本的flink-jdbc,但我无法获得有关使用flink-jdbc的正确方法的任何信息。 如果你知道这个问题,请教我。谢谢。
答案 0 :(得分:0)
我将flink-jdbc版本从1.0.0更改为1.3.0,问题解决了。 但是当我在maven websit上搜索flink-jdbc时 https://mvnrepository.com/search?q=flink-jdbc,我无法在前几页获得正确的信息,这让我觉得flink-jdbc的版本不需要与其他flink jar匹配。 但事实是flink-jdbc / 1.1.3使用包api.table的类RowTypeInfo,但flink-jdbc / 1.3.0使用包api.java的类RowTypeInfo。它们彼此关系密切。 我们必须确保版本匹配。