我实现了一个 Flink 程序,并试图将结果DataSet
存储到关系数据库中。我执行了以下命令:
data.output(JDBCOutputFormat.buildJDBCOutputFormat()
.setDBUrl(dbURL)
.setDrivername(drivername)
.setUsername(username)
.setPassword(password)
.finish()
);
dbUrl
、drivername
、username
和password
分别存储在一个字符串中。
我收到以下错误:
The method output(OutputFormat<Tuple8<String,String,String,String,String,String,String,String>>)
in the type DataSet<Tuple8<String,String,String,String,String,String,String,String>>
is not applicable for the arguments (JDBCOutputFormat)
如何解决这个问题?
从错误消息来看,您的数据集似乎不属于 Row (org.apache.flink.types.Row( 类型。将其转换为行类型,然后调用输出函数。
将 Tuple2 类型的变量"值"转换为行的示例代码。
Row obj = new Row(2);
obj.setField(0,value.f0);
obj.setField(1,value.f1);
由于数据集包含 Tuple8 类型的元素,因此行的大小应为 8(Row(8((。您可以使用映射函数将每个元素从 Tuple8 转换为 Row。