2016-04-23 18 views
6

Sto usandohdfs dfs -put con sovrascrittura?

hdfs dfs -put myfile mypath 

e per alcuni file ottengo

put: 'myfile': File Exists 
  • vuol dire che c'è un file con lo stesso nome o vuol dire lo stesso file esatto (dimensioni, contenuti) è già lì?
  • Come è possibile specificare un'opzione -overwrite qui?

Grazie!

risposta

4

put: 'myfile': File Exists

Rimedi il file denominato "myfile" esiste già in HDFS. Non è possibile avere più file con lo stesso nome in HDFS

È possibile sovrascrivere utilizzando hadoop fs -put -f /path_to_local /path_to_hdfs

+0

grazie! molto utile. faccio verificare se il trasferimento è andato a buon fine? diciamo che avvio hdfs put e chiudo la mia console. hdfs ha ora qualche file corrotto? –

+1

Per verificare se il file copiato è corretto (rispetto alla dimensione) o meno, è possibile utilizzare hdfs dfs -ls/filename. Mostrerà la dimensione del file in byte, insieme ad altre informazioni. @ Noobie – Sumit

+3

Quindi 'hdfs dfs -put -f input output' non funziona? Ho trovato fonti che dice che fa –

4
  1. Un file con un nome è nella posizione che si sta cercando di scrivere.
  2. È possibile sovrascrivere specificando l'opzione -f.
+0

AFAIK, non possiamo sovrascrivere i file presenti in hdf, ed è per questo che hadoop è noto per la proprietà "write once read multiple". Ho sbagliato?? – Sumit

+1

@ user007, è possibile eliminare file e creare un nuovo file con lo stesso nome, sovrascrivere. E in alcuni casi è possibile aggiungere dati alla fine del file ma solo alla fine. Append è disponibile solo in versione hadoop che lo include ed è necessario per HBase e altri framworks. – RojoSam

31

È possibile sovrascrivere il file in HDFS usando -f esempio command.For

hadoop fs -put -f <localfile> <hdfsDir> 

O

hadoop fs -copyFromLocal -f <localfile> <hdfsDir> 

ha funzionato bene per me. Tuttavia, il comando -f non funzionerà in caso di comando get o copyToLocal. check this question