2015-04-15 2 views
1

Я реализую рабочий процесс oozie, где в первом задании я читаю данные из базы данных, используя sqoop и записывая ее в hdfs. Во втором задании мне нужно прочитать большой объем данных и использовать файлы, которые я только что написал в задании для обработки больших данных. Вот то, что я думал, или пытался:Как добавить файлы в распределенный кеш в задание oozie

  1. Предполагая работу один записывает файлы в какой-нибудь каталог на HDFS, добавляя файлы распределенного кэша в классе драйвера задания двух не будет работать как oozie рабочий процесс знает только о картер и редукторы. (Пожалуйста, исправьте меня, если я ошибаюсь здесь)

  2. Я также попытался написать в каталог lib рабочего процесса, надеясь, что файлы будут автоматически добавлены в распределенный кеш, но я понял, что каталог lib должен быть доступен только для чтения когда работа выполняется.

  3. Я также думал, могу ли я добавить файлы в распределенный кеш в setup() задания 2, тогда я мог бы получить к ним доступ в mapper/редукторе. Я не знаю, как можно добавлять файлы в setup(), возможно ли это?

Как еще я могу прочитать выходные файлы предыдущего задания в следующем задании из распределенного кеша. Я уже использую входной каталог задания два, чтобы прочитать данные, которые необходимо обработать, поэтому я не могу их использовать.

Я использую Hadoop 1.2.1, Oozie 3.3.2 на виртуальной машине Ubuntu 12.04.

ответ

0

Добавьте следующие свойства, чтобы добавить файлы или архивы в действие уменьшения карты. Refer to this documentation for details.

<file>[FILE-PATH]</file> 
      ... 
<archive>[FILE-PATH]</archive> 

Вы также можете указать ввод в командной строке java, как показано ниже.

<main-class>org.apache.oozie.MyFirstMainClass</main-class> 
      <java-opts>-Dblah</java-opts> 
      <arg>argument1</arg> 
      <arg>argument2</arg> 
+0

Спасибо тонну. Опция ' [FILE-PATH]' работала для меня. Если это помогает кому-то, вот что я сделал - я сначала использовал действие '', чтобы написать содержимое двух таблиц в hdf. Затем я использовал '' действие для переименования файлов, так как у обоих было имя 'part-m-00000', а затем я использовал' [FILE-PATH] 'в следующем задании, чтобы добавить файлы в распределенный кеш и прочитать их в моем редукторе. – sundeepa

+0

OK, ** но ** что, если scoop дает N количество файлов в пути? – user2458922