将csv文件中的双属性转换为java双属性时出错。阿帕奇·弗林克

将csv文件中的双属性转换为java双属性时出错。阿帕奇·弗林克,java,csv,type-conversion,apache-flink,Java,Csv,Type Conversion,Apache Flink,我尝试在JavaApacheFlink中将csv文件中的一列(名为result)转换为双数据类型。CSV文件中此列值的示例为:123456。此列在逗号前后最多有3个数字。我使用TableSource类来实现这一点。我不断得到以下错误: 原因:org.apache.flink.api.common.io.ParseException:第5182行第2列的分析错误;57,01'由DoubleParser发起:数值\u值\u格式\u错误。 正如你在下面的代码中看到的那样,我已经尝试将“.”替换为“.”

我尝试在JavaApacheFlink中将csv文件中的一列(名为
result
)转换为双数据类型。CSV文件中此列值的示例为:
123456
。此列在逗号前后最多有3个数字。我使用TableSource类来实现这一点。我不断得到以下错误:
原因:org.apache.flink.api.common.io.ParseException:第5182行第2列的分析错误;57,01'由DoubleParser发起:数值\u值\u格式\u错误。

正如你在下面的代码中看到的那样,我已经尝试将“.”替换为“.”。但是下面的代码不能将“.”替换为“.”

ExecutionEnvironment fbEnv=ExecutionEnvironment.getExecutionEnvironment();
BatchTableEnvironment tablenv=BatchTableEnvironment.create(fbEnv);
//CSV文件到表源
TableSource csvSource=CsvTableSource.builder()
.path(“path”)
.fieldDelimiter(“;”)
.field(“ID”,Types.INT())
.field(“result”.replace(“,”,”),类型为.DOUBLE()
.build();
//注册表源
tableEnv.registerTableSource(“HTable”,csvSource);
Table HTable=tableEnv.scan(“HTable”);
数据集结果=tableEnv.toDataSet(HTable,Row.class);
//打印表
试一试{
result.print();
}捕获(例外e){
e、 printStackTrace();
}

此处
.field(“result.replace”(“,”,”)),Types.DOUBLE())
您正在对字符串“result”进行替换,而不是对csv进行替换。您是对的。你知道怎么做吗?我从来没有用过CsvTableSource。我不知道它是否允许您格式化特定字段。我在网上搜索了一下,没有找到这样的例子。我建议您将该字段作为字符串(Types.String())获取,并在以后进行转换。或者更新您的CSV文件,使其具有正确的双格式(如果可能的话)。感谢您的帮助。我把它作为字符串导入。
ExecutionEnvironment fbEnv = ExecutionEnvironment.getExecutionEnvironment();
 BatchTableEnvironment tableEnv = BatchTableEnvironment.create(fbEnv);

//CSV file to Tablesource
TableSource csvSource = CsvTableSource.builder()
                .path("path")
                .fieldDelimiter(";")
                .field("ID", Types.INT())
                .field("result".replace(",", "."), Types.DOUBLE())
                .build();

// register the TableSource 
        tableEnv.registerTableSource("HTable", csvSource);

        Table HTable = tableEnv.scan("HTable");


        DataSet<Row> result = tableEnv.toDataSet(HTable, Row.class);

//Print table
 try {
            result.print();

        } catch (Exception e) {
            e.printStackTrace();
        }