У меня есть 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, у которого есть файл конфигурации?
Проблема заключается в том, что config.properties копируется в том же каталоге команды, а не в каталоге conf. У вас есть способ указать путь config.properties непосредственно в команде Hadoop? Не уверены, поддерживается ли symlink, например conf/config.properties # conf/config.properties, но, возможно, стоит попробовать. – Romain
Вы могли решить эту проблему? – user1452759
@ user1452759 Да, я изменил свой код и удалил конфигурационный файл в тот же каталог с buildModel.jar. – SieuCau