2013-05-20 6 views
5

Posso utilizzare caratteri jolly (ad es. *) O modelli di file (ad es. {}) Nelle azioni di spostamento di Oozie?L'azione HDFS di Oozie può utilizzare file pattern o glob?

Sto cercando di spostare i risultati del mio lavoro nella directory di archiviazione.

Stato della struttura di directory:

output 
- 201304 
- 201305 
archive 
- 201303 

mia azione:

<fs name="archive-files"> 
    <move source="hdfs://namenode/output/{201304,201305}" 
      target="hdfs://namenode/archive" /> 
    <ok to="next"/> 
    <error to="fail"/> 
</fs> 

conseguente errore:

FS006: move, source path [hdfs://namenode/output/{201304,201305}] does not exist 

C'è un modo semplice per spostare più di un file in un glob o bash come la sintassi? Cercando di fare qualcosa di simile a questo comando Hadoop:

hadoop fs -mv hdfs://namenode/output/{201304,201305} hdfs://namenode/archive 

mi sto perdendo qualcosa? Il comando hadoop fs accetta glob. Oozie?

risposta

1

L'azione OOzie HDFS presenta funzionalità piuttosto limitate, che è completamente descritta in functional specification. Per fare qualcosa di più complicato è possibile utilizzare Shell action. Permette di eseguire comandi shell arbitrari come parte del flusso di lavoro, ad es. hadoop fs nel tuo caso.

0

No, per la mia esperienza non sembra che funzioni.

FS006: mossa, percorso di origine [HDFS: // nomenodo: 8020/progetti/bla/201 * gz] non esiste

-1

In uso workflow.xml questo:

<action name="Movefiles"> 
    <fs> 
    <move source='${SourcePath}' target='${DestinationPath}'/> 
    </fs> 
    <ok to="end"/> 
    <error to="fail"/> 
    </action> 

e in job.properties scrivere:

SourcePath = uscita/*/

DestinationPath = archivio