Apache Flink:使用JDBCOutputFormat时的异常

时间:2018-04-13 08:47:44

标签: apache-flink

我实现了一个Flink程序,并尝试将结果DataSet存储到关系数据库中。我做了以下命令:

data.output(JDBCOutputFormat.buildJDBCOutputFormat()
                    .setDBUrl(dbURL)
                    .setDrivername(drivername)
                    .setUsername(username)
                    .setPassword(password)
                    .finish()
                    );

dbUrldrivernameusernamepassword分别存储在字符串中。

我收到以下错误:

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) 

我该如何解决这个问题?

1 个答案:

答案 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。