Apache Flink:使用 JDBCOutputFormat 时的异常



我实现了一个 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) 

如何解决这个问题?

从错误消息来看,您的数据集似乎不属于 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。

相关内容

  • 没有找到相关文章

最新更新