我已经将csv文件中的数据导入到flinkjava中。其中一个属性我必须导入为字符串(属性 Result
)因为分析错误。现在我想把字符串转换成双精度。但我不知道如何处理tablesource、table或dataset类的对象。请参阅下面的代码。
我查阅了flink文档,并尝试了一些使用map和flatmap类的解决方案。但我没有找到解决办法。
BatchTableEnvironment tableEnv = BatchTableEnvironment.create(fbEnv);
//Get H data from CSV file.
TableSource csvSource = CsvTableSource.builder()
.path("Path")
.fieldDelimiter(";")
.field("ID", Types.INT())
.field("result", Types.STRING())
.field("unixDateTime", Types.LONG())
.build();
// register the TableSource
tableEnv.registerTableSource("HTable", csvSource);
Table HTable = tableEnv.scan("HTable");
DataSet<Row> result = tableEnv.toDataSet(HTable, Row.class);
1条答案
按热度按时间a5g8bdjr1#
我认为应该使用replace和cast的组合来将字符串转换为double,比如“select id,cast(replace(result,,,,,,,,,,,,”)as double)as result,…”或者使用table api的等效方法。