Dataset<CityToCityLevel> resultTmp = result2.map((MapFunction<Row, CityToCityLevel>) row -> {
CityToCityLevel citylevel = new CityToCityLevel();
if (row.get(0) != null) {
System.out.print(row.getInt(3));
if (row.getInt(3) > 10) {
citylevel.setScore_level(3);
citylevel.setStartCityId(row.<Integer>getAs(3));
citylevel.setEndCityId(row.<Integer>getAs(4));
} else {
citylevel.setScore_level(2);
citylevel.setStartCityId(row.<Integer>getAs(3));
citylevel.setEndCityId(row.<Integer>getAs(4));
}
return citylevel;
}
return null;
}, Encoders.bean(CityToCityLevel.class));
在进行网络传输的过程中,需要经历序列化,反序列化过程,在反序列化的过程中需要解码,在序列化的过程中需要编码
所以你需要你返回的过程中编码城什么类型的数据,是string ,还是long,还是一个对象,还是一个map 都需要声明一下
如果需要返回的数据是一个对象:Encoders.bean(CityToCityLevel.class)
如果需要返回的数据是String : Encoders.STRING()
Dataset<String> resultTmp = result2.map((MapFunction<Row, String>) row -> {
return null
}, Encoders.STRING());
等等以此类推
下面我把源码翻译一下
/*
* Licensed to the Apache Software Foundation (A