Как передать аргументы действию Oozie с помощью oozie.launcher.action.main.class?

У Oozie есть свойство конфигурации с именем oozie.launcher.action.main.class, где вы можете передать имя «основного класса» для действия уменьшения карты (или действия оболочки), например:

  <configuration>
    <property>
      <name>oozie.launcher.action.main.class</name>
      <value>com.company.MyCascadingClass</value>
    </property>
  </configuration>

Но мне нужно передать аргументы моему основному классу, и я не вижу способа сделать это. Любые идеи?

Я спрашиваю, потому что пытаюсь запустить каскадный класс/поток из Oozie, и все варианты, которые я пробовал до сих пор, не увенчались успехом. Если кто-то получил Cascading для работы от Oozie, дайте мне знать, и я отправлю еще один вопрос, в частности, с этим вопросом.


person quux00    schedule 08.10.2013    source источник
comment
Пробовали ли вы синтаксис действий Java: oozie.apache.org/ документы/3.3.2/ ?   -  person Dmitry    schedule 09.10.2013
comment
Я не думал, что это сработает с java-экшеном, потому что каскадному заданию нужны jar-файлы Hadoop в пути к классам, но, к счастью, oozie помещает их в cp бесплатно! Так что это работает. Если вы поместите свой комментарий в качестве ответа, я приму его.   -  person quux00    schedule 09.10.2013


Ответы (1)


Что касается Oozie 3 (еще не пробовал Oozie 4), ответ на мой главный вопрос: вы не можете. Нет возможности (как ни странно) указать какие-либо аргументы для вашего основного класса, определенного с помощью свойства oozie.launcher.action.main.class.

Предложение @Dmitry в комментариях просто использовать java-действие Oozie работает для каскадного задания (или любого задания, зависящего от Hadoop), потому что Oozie помещает все jar-файлы Hadoop в путь к классам при запуске задания.

Я задокументировал рабочий пример запуска каскадного задания из Oozie в своем блоге здесь: http://thornydev.blogspot.com/2013/10/launching-cascading-job-from-apache.html

Вот файл workflow.xml, который у меня работал:

<workflow-app xmlns='uri:oozie:workflow:0.2' name='cascading-wf'>
  <start to='stage1' />
  <action name='stage1'>
    <java>
      <job-tracker>${jobTracker}</job-tracker>
      <name-node>${nameNode}</name-node>

      <configuration>
        <property>
          <name>mapred.job.queue.name</name>
          <value>${queueName}</value>
        </property>
      </configuration>

      <main-class>com.mycompany.MyCascade</main-class>
      <java-opts></java-opts>
      <arg>/user/myuser/dir1/dir2</arg>
      <arg>my-arg-2</arg>
      <arg>my-arg-3</arg>
      <file>lib/${EXEC}#${EXEC}</file> 
      <capture-output />
    </java>
    <ok to="end" />
    <error to="fail" />
  </action>

  <kill name="fail">
    <message>FAIL: Oh, the huge manatee!</message>
  </kill>

  <end name="end"/>
</workflow-app>

В файле job.properties, сопровождающем workflow.xml, свойство EXEC определено как:

EXEC=mybig-shaded-0.0.1-SNAPSHOT.jar

и задание помещается в каталог lib ниже, где находятся эти два файла определений.

person quux00    schedule 12.10.2013