2013-05-20 19 views
5

Czy można użyć symboli wieloznacznych (np. *) Lub wzorców plików (np. {}) W operacjach przenoszenia Oozie?Czy akcja OZie HDFS może wykorzystywać wzorce plików lub glob?

Próbuję przenieść wyniki mojej pracy do katalogu archiwizacji.

Stan struktury katalogów:

output 
- 201304 
- 201305 
archive 
- 201303 

Moja akcja:

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

wynikające błąd:

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

Czy istnieje prosty sposób przenieść więcej niż jeden plik w składnia globalna lub bashowa? Chcesz zrobić coś podobnego do tej komendy hadoop:

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

Czy czegoś brakuje? Komenda hadoop fs akceptuje glob. Czy Oozie?

Odpowiedz

1

Oozie HDFS ma dość ograniczoną funkcjonalność, która jest w pełni opisana w functional specification. Aby zrobić coś bardziej skomplikowanego, możesz użyć Shell action. Umożliwia uruchamianie dowolnych poleceń powłoki w ramach przepływu pracy, np. hadoop fs w twoim przypadku.

0

Nie - z mojego doświadczenia nie wygląda na to, że działa.

FS006: ruch, ścieżka źródłowa [HDFS: // nazwa węzła: 8020/projekty/bla/201 * .gz] nie istnieje

-1

W użyciu workflow.xml to:

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

i w job.properties napisać:

SourcePath = wyjście/*/

DestinationPath = Archiwum