Apache flink ApacheFlink:使用JDBCOutputFormat时出现异常
我实现了一个Flink程序,并尝试将结果Apache flink ApacheFlink:使用JDBCOutputFormat时出现异常,apache-flink,Apache Flink,我实现了一个Flink程序,并尝试将结果DataSet存储到关系数据库中。我执行了以下命令: data.output(JDBCOutputFormat.buildJDBCOutputFormat() .setDBUrl(dbURL) .setDrivername(drivername) .setUsername(username) .se
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)
方法输出(OutputFormat)
在类型数据集中
不适用于参数(JDBCOutputFormat)
如何解决此问题?从错误消息中,您的数据集似乎不是Row类型(org.apache.flink.types.Row)。将其转换为行类型,然后调用输出函数 将Tuple2类型的变量“value”转换为行的示例代码
Row obj = new Row(2);
obj.setField(0,value.f0);
obj.setField(1,value.f1);
由于数据集包含Tuple8类型的元素,因此行的大小应为8(行(8))。您可以使用map函数将每个元素从Tuple8转换为Row。请向我们提供完整的例外情况。数据集数据包含什么?仅当数据集包含行(特定的Flink类型)时才能使用JDBCOutputFormat。数据集如下所示:
DataSet data=env.readCsvFile(“D:\\WorkDocument\\Dummy\U data\\data”)。fieldDelimiter(“|”)。类型(String.class、String.class、String.class、String.class、String.class、String.class、String.class、String.class);
如何从数据集转换数据集