2015-01-06 3 views
0

У меня есть buildModel.jar и папка «conf», которая содержит файл конфигурации с именем config.properties.Как сделать Hue - рабочий процесс Oozie запустить java-задание с конфигурационным файлом?

Командная строка запуска она выглядит следующим образом:

hadoop jar /home/user1/buildModel.jar -t fp-purchased-products -i hdfs://Hadoop238:8020/user/user2/recommend_data/bought_together 

После выполнения некоторых анализа, он использует информацию в БД в файле «config.properties» для хранения данных в Монго дб.

Теперь мне нужно запустить его с рабочим процессом Hue Oozie, поэтому я использовал Hue для загрузки файла jar и папки «conf» в hdfs, а затем создал рабочий процесс. Я также добавил файл "config.properties" в рабочем процессе

Это workflow.xml

<workflow-app name="test_service" xmlns="uri:oozie:workflow:0.4"> 
<start to="run_java_file"/> 
<action name="run_java_file"> 
    <java> 
     <job-tracker>${jobTracker}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <main-class>xxx.xxx.recommender.buildModel.Application</main-class> 
     <arg>-t=fp-purchased-products</arg> 
     <arg>-i=hdfs://Hadoop238:8020/user/user2/recommend_data/bought_together</arg> 
     <file>/user/user2/service/build_model/conf/config.properties#config.properties</file> 
    </java> 
    <ok to="end"/> 
    <error to="kill"/> 
</action> 
<kill name="kill"> 
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
</kill> 
<end name="end"/> 

И это рабочий-metadata.json

{"attributes": {"deployment_dir": "/user/hue/oozie/workspaces/_user2_-oozie-31-1416890719.12", "description": ""}, "nodes": {"run_java_file": {"attributes": {"jar_path": "/user/user2/service/build_model/buildModel.jar"}}}, "version": "0.0.1"} 

После выполнения анализа, он получил ошибку при сохранении данных в mongo db. Кажется, что java-файл не может видеть config.properties.

Может ли кто-нибудь посоветовать мне, как использовать Hue Oozie запустить java, у которого есть файл конфигурации?

+0

Проблема заключается в том, что config.properties копируется в том же каталоге команды, а не в каталоге conf. У вас есть способ указать путь config.properties непосредственно в команде Hadoop? Не уверены, поддерживается ли symlink, например conf/config.properties # conf/config.properties, но, возможно, стоит попробовать. – Romain

+0

Вы могли решить эту проблему? – user1452759

+0

@ user1452759 Да, я изменил свой код и удалил конфигурационный файл в тот же каталог с buildModel.jar. – SieuCau

ответ

0

Извините за поздний ответ.

Как объяснил Ромен. Hue скопирует config.properties в тот же каталог с помощью BuildModel.jar. Поэтому я изменил код, чтобы позволить BuildModel.jar читать файл конфигурации в том же каталоге. Это сработало !