Если вы просто хотите отправить N строк ввода одному мапперу, вы можете использовать класс NLineInputFormat .Затем вы можете выполнить разбор строк (разделение на запятые и т. Д.) В преобразователе.
Если вы хотите иметь доступ к строкам до и после строки, обрабатываемой преобразователем в данный момент, вам, возможно, придется написатьсобственный формат ввода.Подклассы FileInputFormat обычно являются хорошим местом для начала.Вы можете создать InputFormat, который читает N строк, объединяет их и отправляет их как один блок в преобразователь, который затем снова разбивает входные данные на N строк и начинает обработку.
Что касается глобалов в Hadoop,Вы можете указать некоторые пользовательские параметры при создании конфигурации задания, но, насколько мне известно, вы не можете изменить их в работнике и ожидать, что это изменение будет распространяться по всему кластеру.Чтобы установить параметр задания, который будет виден работникам, выполните следующие действия при создании задания:
job.getConfiguration().set(Constants.SOME_PARAM, "my value");
Затем, чтобы прочитать значение параметров в картотеке или редукторе,
public void map(Text key, Text value, Context context) {
Configuration conf = context.getConfiguration();
String someParam = conf.get(Constants.SOME_PARAM);
// use someParam in processing input
}
Hadoop поддерживает базовые типы, такие как int, long, string, bool и т. Д., Которые должны использоваться в параметрах.