我实现了一个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)
我该如何解决这个问题?
答案 0 :(得分:1)
从错误消息中,您的DataSet看起来不是Row类型(org.apache.flink.types.Row)。将其转换为行类型,然后调用输出函数。
转换变量&#39;值&#39;的示例代码Tuple2类型为Row。
Row obj = new Row(2);
obj.setField(0,value.f0);
obj.setField(1,value.f1);
由于您的DataSet包含Tuple8类型的元素,因此您的Row的大小应为8(行(8))。您可以使用map函数将每个元素从Tuple8转换为Row。