2014-04-22 34 views
12

Sono su Windows 7. Ho installato mrjob e quando eseguo il example word_count file dal sito Web, funziona correttamente sul computer locale. Tuttavia, ottengo l'errore quando tento di eseguirlo su Amazon EMR. Ho anche provato a connettermi ad amazon s3 con solo boto e funziona.mrjob: percorso di avvio bootstrap non valido, deve essere una posizione in Amazon S3

file di mrjob.conf

runners: 
    emr: 
    aws_access_key_id: xxxxxxxxxxxxx 
    aws_region: us-east-1 
    aws_secret_access_key: xxxxxxxx 
    ec2_key_pair: bzy 
    ec2_key_pair_file: C:\aa.pem 
    ec2_instance_type: m1.small 
    num_ec2_instances: 3 
    s3_log_uri: s3://myunique/ 
    s3_scratch_uri: s3://myunique/ 

eseguendo il seguente nel mio cmd

python word_count.py -c mrjob.conf -r emr mytext.txt 

produce

enter image description here

Su suggerimenti che si trattava di un problema relativo finestre percorso, Ho ricontrollato il parse.py nel codice sorgente e vedo ms di avere il controllo corrispondente per trattare con i tipi di file finestra

# Used to check if the candidate candidate uri is actually a local windows path. 
WINPATH_RE = re.compile(r"^[aA-zZ]:\\") 


def is_windows_path(uri): 
    """Return True if *uri* is a windows path.""" 
    if WINPATH_RE.match(uri): 
     return True 
    else: 
     return False 


def is_uri(uri): 
    """Return True if *uri* is any sort of URI.""" 
    if is_windows_path(uri): 
     return False 

    return bool(urlparse(uri).scheme) 

Quello che non capisco è che sto ancora ottenendo l'errore anche dopo il codice aggiornato, e io non sono sicuro di come andare avanti con Questo.

+0

Vorrei poterti aiutare, ma non lavoro su Windows e attualmente non ho un facile accesso ad AWS/EMR. Una cosa che suggerisco è di guardare i log degli errori. Quelli che Hadoop sputa sono ancora piuttosto criptici, ma spesso ti danno abbastanza indizi su cosa non va. –

+0

Si prega di ri-eseguire con '-v' e postare il tutto su http://paste.pound-python.org/, dopo aver cancellato le chiavi, ovviamente. Non hai configurato bootstrap-action? – bukzor

+0

@bukzor http://paste.pound-python.org/show/rL6lwzD3tsASsQMXeq13/ – KJW

risposta

3

I problemi che si verificano sono dovuti al file system di Windows che utilizza il carattere di escape \ (barra rovesciata) nel suo percorso. Basta raddoppiarlo e non dovresti avere più problemi.

modificare il file mrjob.conf a:

runners: 
    emr: 
    aws_access_key_id: xxxxxxxxxxxxx 
    aws_region: us-east-1 
    aws_secret_access_key: xxxxxxxx 
    ec2_key_pair: bzy 
    ec2_key_pair_file: C:\\aa.pem 
    ec2_instance_type: m1.small 
    num_ec2_instances: 3 
    s3_log_uri: s3://myunique/ 
    s3_scratch_uri: s3://myunique/ 

Per ulteriori informazioni visitare il sito: http://yaml.org/spec/1.2/spec.html#id2770814

1

ho avuto un problema simile, e ha scoperto che il mio problema era che avevo inserito il codice da varie file con percorsi di file all'interno del mio lavoro. In tal caso, si verificherà anche l'errore annotato.

+0

non sono sicuro di averlo sotto in questo modo, come sei riuscito a risolverlo – KJW

+0

Se hai uno script python che tenta di accedere a un file locale, come una funzione helper in un file diverso, o dati che si trovano in quel file, il il file di riferimento che funziona localmente non esiste sulla macchina remota, quindi fallirà dando quell'errore. Ho aggiunto la risposta nel caso in cui un altro ricercatore trovi questa domanda, ma sta ricevendo l'errore per la mia ragione invece della tua. –