故障代码:
DataSet<Sales> ds2=env.readCsvFile(inPath).lineDelimiter("\n").fieldDelimiter(",").ignoreFirstLine().includeFields("1111")//四列字段都要.pojoType(Sales.class, "transacitonId","customerId", "itemId", "amountPaid");((DataSource<Sales>) ds2).setParallelism(1).writeAsCsv(outPath, "\n","|", FileSystem.WriteMode.OVERWRITE);env.execute();
完整报错信息如下:
Exception in thread "main" java.lang.IllegalArgumentException:The writeAsCsv() method can only be used on data sets of tuples.
at org.apache.flink.util.Preconditions.checkArgument(Preconditions.java:139)
at org.apache.flink.api.java.DataSet.internalWriteAsCsv(DataSet.java:1630)
at org.apache.flink.api.java.DataSet.writeAsCsv(DataSet.java:1625)
at HDFS_Read.main(HDFS_Read.java:38)
解决方案:
讲人话就是,这个 writeAsCsv是个半成品,只能写入
DataSet<Tuple3<String,String,Integer>> ds2
这种类型的数据,不支持pojo类型的数据写入