Я хотел бы, чтобы результат моей задачи потокового редуктора отличался для номера раздела 0, чем для других разделов. Как я могу сказать из моего скрипта, что задача редуктора работает?Как я могу указать идентификатор/номер задачи редуктора, с которым работает мой скрипт в потоке Hadoop?
ответ
Я только что понял, что существуют переменные окружения mapreduce_task_id
и mapreduce_task_partition
, из которых можно получить доступ из сценария. Они будут иметь различные значения для различных снижающих задач, например, задача 0 имеет:
mapreduce_task_id=task_1410791469618_0007_r_000000
тогда, задача 1 имеет:
mapreduce_task_id=task_1410791469618_0007_r_000001
Аналогично, задача 0 имеет:
mapreduce_task_partition=0
и
mapreduce_task_partition=1
.
В Python, они могут быть доступны следующим образом:
import os
my_task_id = os.environ.get('mapreduce_task_partition')
Как сказал Nonnib, если вы запускаете свою работу на MR2/Пряжа: mapreduce_task_id
не установлен. Вместо этого используйте mapred_task_id
.
Единственная ссылка у меня есть Vowpal Wabbit script (также, я использую его в моих пряжи рабочих мест, и это хорошо работает с версией до Hadoop 2.0.0-cdh4.6.0)
Да, это путь об этом. В переменных окружающей среды есть всевозможные сочные фрагменты информации, и вы даже можете пройти самостоятельно. Имейте в виду, что их формат отличается от нового дистрибутива YARN hadoop и старого. – Nonnib
Thank, Nonnib. У вас есть указатель на то, где все это задокументировано? – Mateo
Я сам не нашел никакой документации, просто распечатал os.environ в 1.0 и 2.0. – Nonnib