Я пытаюсь написать простой маппер, который читает файл csv и выдает один столбец как ключ, а другой - как значение, отбрасывая все остальное. Оба столбца имеют числовые данные c. Картограф работает, когда я воспринимаю и ключ, и значение как текст. Однако, когда я пытаюсь вернуть значение как float, он не возвращает никаких строк.
Вот мой код (закомментированный код, который обрабатывает значение как текст и работает):
public static class FiltrationMapper
extends Mapper<Object, Text, Text, FloatWritable>{
private Text keyText = new Text();
//private Text valText = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
String line = value.toString();
String[] parts = line.split(",");
try
{
int pickupLocationId = Integer.parseInt(parts[0].trim());
float fare = Float.parseFloat(parts[3].trim());
if(pickupLocationId >= 0 && distance > 0 && fare > 0)
{
String keyStr = Integer.toString(pickupLocationId);
keyText.set(keyStr);
//private Text valText = new Text();
//String valStr = Float.toString(fare);
//valText.set(valStr);
FloatWritable f = new FloatWritable(fare);
context.write(keyText, f);
}
}
catch(Exception e)
{
}
}
}