Hadoop: ключ и значение разделены вкладками в выходном файле. как сделать это с запятой?

Я думаю, что название уже объясняет мой вопрос. Я хотел бы изменить

key (tab space) value

в

key;value

во всех выходных файлах редукторы генерируются с выхода картографов.

Я не мог найти хорошую документацию по этому вопросу с помощью Google. Кто-нибудь может дать часть кода о том, как это сделать?

Ответ 1

Задайте для свойства конфигурации mapred.textoutputformat.separator значение ";"

Ответ 2

В отсутствие лучшей документации, вот что я собрал:

    setTextOutputFormatSeparator(final Job job, final String separator){
            final Configuration conf = job.getConfiguration(); //ensure accurate config ref

            conf.set("mapred.textoutputformat.separator", separator); //Prior to Hadoop 2 (YARN)
            conf.set("mapreduce.textoutputformat.separator", separator);  //Hadoop v2+ (YARN)
            conf.set("mapreduce.output.textoutputformat.separator", separator);
            conf.set("mapreduce.output.key.field.separator", separator);
            conf.set("mapred.textoutputformat.separatorText", separator); // ?
    }

Ответ 3

вы можете использовать свойство "KEY_VALUE_SEPERATOR" для "KeyValueLineRecordReader", чтобы указать разделитель по вашему выбору.