Come copiare file da HDFS nel file system locale


135

Come copiare file da HDFS nel file system locale. Non esiste una posizione fisica di un file sotto il file, nemmeno la directory. come posso spostarli nel mio locale per ulteriori convalide. Sono stato provato tramite winscp.

Risposte:


242
  1. bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
  2. bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
  3. Punta il tuo browser web su HDFS WEBUI ( namenode_machine:50070), cerca il file che intendi copiare, scorri la pagina verso il basso e fai clic su scarica il file .

perfetto tariq, ho capito, non esiste una posizione fisica di un file sotto il file, nemmeno la directory. bin / hadoop dfs -ls / use / hadoop / myfolder posso visualizzare il file, da ho ottenuto le informazioni come per ispezionare il file, è possibile copiarlo da HDFS al file system locale , quindi anche se posso spostarli da winscp
Surya,

2
ancora una volta ho bisogno di menzionare Tariq, grazie mille per averti contribuito con tempo e conoscenza. molte grazie . hai supportato molto, questo dà molta fiducia a un nuovo amico come me.
Surya,

1
Vedo. Puoi effettivamente usare il comando hdfs cat se vuoi vedere il contenuto del file o aprire il file sul webui. Questo ti salverà dal download del file sul tuo fs locale. Prego. E se sei soddisfatto al 100% delle risposte alle tue domande, puoi contrassegnarle in modo che altri possano trarne beneficio. Non solo per questa, ma in generale.
Tariq,

2
Solo per aggiungere al mio commento lat, se si tratta di un file binario, cat non ti mostrerà il contenuto reale. Per visualizzare il contenuto di un file binario è possibile utilizzare: bin / hadoop fs -text / path / to / file
Tariq

1
Sembra essere un bug (risolto). Vedi la risposta
Tariq,

27

In Hadoop 2.0,

hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>

dove,

  • hdfs_input_file_path forse ottenuto da http://<<name_node_ip>>:50070/explorer.html

  • output_path è il percorso locale del file, in cui il file deve essere copiato.

  • puoi anche usare getal posto di copyToLocal.


15

Per copiare file da HDFS nel file system locale è possibile eseguire il comando seguente:

hadoop dfs -copyToLocal <input> <output>

  • <input>: il percorso della directory HDFS (ad es. / mydata) che si desidera copiare
  • <output>: il percorso della directory di destinazione (es. ~ / Documents)

1
Questo non sembra funzionare per me. Dice sempre che il file <input> non è stato trovato. Sto usando l'istanza VM di cloudera che ha cent os 6.4
SutharMonil il

@SutharMonil Sei sicuro che il file sia effettivamente lì? Puoi navigare lì hadoop fs -ls?
Dennis Jaheruddin,

6

puoi realizzare in entrambi questi modi.

1.hadoop fs -get <HDFS file path> <Local system directory path>
2.hadoop fs -copyToLocal <HDFS file path> <Local system directory path>

Ex:

I miei file si trovano in /sourcedata/mydata.txt . Voglio copiare il file nel file system locale in questo percorso / utente / ravi / mydata

hadoop fs -get /sourcedata/mydata.txt /user/ravi/mydata/

3

Se il "file" di origine è suddiviso tra più file (forse a causa della riduzione della mappa) che vivono nella stessa struttura di directory, puoi copiarlo in un file locale con:

hadoop fs -getmerge /hdfs/source/dir_root/ local/destination

Questo dovrebbe essere accettato. Questo è ciò che la maggior parte delle persone sta cercando, non un file suddiviso.
James O'Brien,

2

Questo ha funzionato per me sulla mia istanza VM di Ubuntu.

hdfs dfs -copyToLocal [directory hadoop] [directory locale]


0

se si sta utilizzando la finestra mobile, è necessario eseguire le seguenti operazioni:

  1. copia il file da hdfs a namenode (hadoop fs -get output / part-r-00000 / out_text). "/ out_text" verrà memorizzato sul namenode.

  2. copia il file da namenode sul disco locale da (docker cp namenode: / out_text output.txt)

  3. output.txt sarà presente nella directory di lavoro corrente


-3
bin/hadoop fs -put /localfs/destination/path /hdfs/source/path 

1
hdfs dfs -put è un comando per trasferire i file da FS locale a HDFS. hdfs dfs -get è l'opzione giusta
b_rousseau il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.