2014-05-13 26 views
5

Sto invocando uno script di shell bash utilizzando l'editor di oozie in Hue.Esecuzione di script di shell da oozie tramite Hue

ho usato l'azione della shell nel flusso di lavoro e ha cercato di seguito le diverse opzioni nel comando di shell:

  1. Caricato lo script di shell usando 'scegliere un file'
  2. Gave percorso della directory locale in cui è presente script di shell
  3. Gave percorso HDFS dove è shell script presente

Ma tutte queste opzioni ha dato seguente errore:

Cannot run program "sec_test_oozie.sh" (in directory "/data/hadoop/yarn/local/usercache/user/appcache/application_1399542362142_0086/container_1399542362142_0086_01_000002"): java.io.IOException: error=2, No such file or directory

Come devo fornire il comando di esecuzione dello script della shell? Dove dovrebbe risiedere il file di script della shell?

+0

Cerca _java.io.IOException: errore = 2, nessun file o directory_ – devnull

+0

Hai trovato una soluzione per questo, ho lo stesso problema. – CruncherBigData

+0

@CruncherBigData si prega di dare un'occhiata alla soluzione SergioRG e l'estensione che ho scritto. L'errore è molto confuso e mi ha dato un mal di testa. –

risposta

0

Hai modificato sec_test_oozie.sh con Hue File Browser? A seconda della versione di Hue, potrebbe averlo danneggiato: hue-list

+0

No Romain ... Ho caricato il file Script dal locale attraverso l'opzione "Carica file" e ho provato direttamente a dare il percorso HDFS dove risiede lo script di shell. –

5

È necessario aggiungere il file "sec_test_oozie.sh" nel passo della shell di Oozie. In aggiungere file

+0

L'errore si sta confondendo, non dice tale file o directory quando abbiamo già caricato il file .sh. – sumit

+2

Grazie Sergio. Non capisco quali persone stupide hanno fatto questa interfaccia utente e purtroppo la nostra azienda lo usa. – blueskin

0

Ho riscontrato lo stesso problema e il problema era che lo script faceva eco a una riga non pertinente mentre il flusso di lavoro tentava di analizzarlo come una linea di proprietà. Oozie ha dato un messaggio di errore irrilevante non valido di java.io.IOException: error=2, No such file or directory che ha solo aggiunto confusione.

  1. Per aggiungere lo script è necessario utilizzare <file>.
  2. se è stato utilizzato <capture-output/> allora è necessario assicurarsi che le stampe di script solo "chiave = valore" linee, come la proprietà Java, altrimenti si otterrà l'errore che si vede java.io.IOException: error=2, No such file or directory con un po 'il percorso che punta alla .../yarn/local/usercache/...
5

I pensa di creare il file da windows machine che aggiunge caratteri di interruzione di riga aggiuntivi. Devi convertire il file di script della shell in formato Unix. Ho anche affrontato lo stesso problema. Poi ho creato il file da un sistema Linux e ha iniziato a funzionare. L'errore è fuorviante.

+0

Sei la mia soluzione. – ChikuMiku

-1

"Nessun file o directory di questo tipo" oozie non è in grado di individuare il file. Si prega di verificare l'impostazione di AddPath nel comando.

Nel nodo di modifica seciton, ottenere il percorso hdfs dell'applicazione oozie.

Carica lo script della shell nel percorso dell'applicazione hdfs oozie.

Nel passaggio del nodo di modifica Oozie, comando Shell - specificare il nome dello script della shell che viene caricato.

Al di sotto di questa opzione è possibile aggiungere AddPath, quindi aggiungere file, aggiungere lo script della shell che è stato caricato nel percorso hdfs.

-1

Rimozione del #!/Bin/bash dal mio script di shell mi ha aiutato

2

voglio estendere la risposta @SergioRG. Oozie, almeno con l'interfaccia Hue di Cloudera è molto controintuitivo.

Per eseguire un file di script, tre condizioni devono essere soddisfatte:

  1. il file è sul file HDFS di sistema, in una cartella accessibile in Oozie
  2. il file deve essere indicato nel campo comando di shell
  3. il file deve essere aggiunto con qualsiasi altro file dipendente nella parte "File +" della scheda attività.

How to add files in the Oozie Hue interface

mi chiedo perché non hanno aggiunto di default il file di script che si sta chiamando.

Modifica: si prega di controllare anche le opzioni avanzate (l'ingranaggio nell'angolo in alto a sinistra) se è necessario impostare la variabile percorso (ad esempio PATH =/usr/local/bin:/usr/bin).