2015-03-19 1 views
0

Я хотел бы сделать рабочий процесс oozie, где последним шагом будет «Архивировать» результаты.Рабочий процесс Oozie с действием архива

Команда в оболочке, чтобы сделать это

hadoop archive -archiveName=XXX.har -p /some/random/parent directorToArhive pathToArchiveDestination 

Я попытался следующий

<workflow-app name="HARD_CODED_ARCHIVE_TEST" xmlns="uri:oozie:workflow:0.4"> 

    <start to="archive"/> 
    <action name="archive"> 
     <archive archiveName="xxx.har" src="/root/src/dir" dest="/path/to/desired/archive/location"/> 
     <ok to="end"/> 
     <error to="kill"/> 
    </action> 

    <kill name="kill"> 
     <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
    </kill> 
    <end name="end"/> 
</workflow-app> 

Я получаю ошибку что-то вроде следующего:

WARNING: Exception in Runloop of thread: main with message: E0701: XML schema error, cvc-complex-type.2.4.a: Invalid content was found starting with element 'archive'. One of '{"uri:oozie:workflow:0.4":map-reduce, "uri:oozie:workflow:0.4":pig, "uri:oozie:workflow:0.4":sub-workflow, "uri:oozie:workflow:0.4":fs, "uri:oozie:workflow:0.4":java, WC[##other:"uri:oozie:workflow:0.4"]}' is expected. 

Так очень ясно, что я не могу этого сделать. потому что схема рабочего процесса oozie не поддерживает действие «архива».

Я действительно не хочу запускать это через cron, поскольку я хотел бы архивировать сразу после успешного завершения рабочего процесса, как это сделать.

ответ

3

Попробуйте это:

<action name="archive"> <java> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <main-class>org.apache.hadoop.tools.HadoopArchives</main-class> <arg>-archiveName</arg> <arg>${YourArchiveName}.har</arg> <arg>-p</arg> <arg>${FilesParentDirectory}</arg> <arg>${SrcDirectory}</arg> <arg>${DestDirectory}</arg> </java> <ok to="end"/> <error to="error"/> </action>

Все, что вам нужно, это Hadoop-archives.jar файл в рабочий процесс. Кроме того, не забудьте положить банку в свой каталог рабочего процесса, и вам должно быть хорошо идти. Надеюсь, это поможет!

+0

user1569891 - Это было очень хорошее решение. Большое спасибо! –