Mapper не создает записи при использовании FloatWritable - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь написать простой маппер, который читает файл 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)
        {
        }

    }
  }
...