Як скопіювати файл з HDFS в локальну файлову систему


135

Як скопіювати файл з HDFS в локальну файлову систему. Під файлом немає фізичного розташування, навіть у каталозі. Як я можу перенести їх у свій місцевий для подальшої валідації. Мене пробують через wincp.

Відповіді:


242
  1. bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
  2. bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
  3. Наведіть веб-браузер на HDFS WEBUI ( namenode_machine:50070), перейдіть до файлу, який ви хочете скопіювати, прокрутіть сторінку вниз і натисніть на завантаження файлу .

ідеальний tariq, я його отримав, Немає фізичного розташування файлу під файлом, навіть у каталозі. bin / hadoop dfs -ls / use / hadoop / myfolder Я можу переглянути файл, звідки я отримав інформацію як для огляду файлу, ви можете скопіювати його з HDFS в локальну файлову систему , так що я хоч і можу перенести їх з wincp
Суря

2
ще раз мені потрібно згадати tariq, велике спасибі за те, що ви зробили ваш час та знання. дуже дякую . Ви багато підтримували, це дає велику впевненість у новому, як я.
Суря

1
Я бачу. Насправді ви можете використовувати команду hdfs cat, якщо хочете переглянути вміст файлу або відкрити файл на веб-сайті. Це позбавить вас від завантаження файлу на ваш місцевий фс. Будь ласка. І якщо ви на 100% задоволені відповідями на ваші запитання, можете позначити їх, щоб інші могли отримати від цього користь. Не тільки для цього, але загалом.
Тарік

2
Просто додати до мого коментаря lat, якщо це двійковий файл, кішка не покаже вам фактичний вміст. Для перегляду вмісту двійкового файлу ви можете використовувати: bin / hadoop fs -text / path / to / file
Tariq

1
Начебто помилка (виправлена). Дивіться відповідь.
Тарік

27

У Hadoop 2.0,

hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>

де,

  • hdfs_input_file_path можливо, отриманий від http://<<name_node_ip>>:50070/explorer.html

  • output_path - це локальний шлях до файлу, куди слід скопіювати файл.

  • ви також можете використовувати getзамість copyToLocal.


15

Для копіювання файлів з HDFS в локальну файлову систему можна виконати наступну команду:

hadoop dfs -copyToLocal <input> <output>

  • <input>: шлях до каталогу до файлів HDFS (наприклад, / mydata), який ви хочете скопіювати
  • <output>: шлях до каталогу призначення (наприклад, ~ / Документи)

1
Це, здається, не працює для мене. Він завжди говорить, що файл <input> не знайдено. Я використовую екземпляр VM cloudera, який має цент os 6.4
SutharMonil

@SutharMonil Ви впевнені, що файл насправді є? Ви можете переглядати там через hadoop fs -ls?
Денніс Джахеруддін

6

ви можете досягти обох цих способів.

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

Наприклад:

Мої файли знаходяться в /sourcedata/mydata.txt Я хочу скопіювати файл у локальну файлову систему на цьому шляху / користувача / ravi / mydata

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

3

Якщо ваш вихідний "файл" розділений на декілька файлів (можливо, в результаті зменшення карти), що живуть в одному дереві каталогів, ви можете скопіювати його в локальний файл за допомогою:

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

Це слід прийняти. Це те, що шукає більшість людей, а не розділений файл.
Джеймс О'Брайен

2

Це працювало для мене на моєму екземплярі VM Ubuntu.

hdfs dfs -copyToLocal [каталог hadoop] [локальний каталог]


0

якщо ви використовуєте докер, ви повинні виконати наступні дії:

  1. скопіюйте файл з hdfs в Namenode (hadoop fs -get output / part-r-00000 / out_text). "/ out_text" буде збережено у наментоді.

  2. скопіюйте файл з namenode на локальний диск (docker cp namenode: / out_text output.txt)

  3. output.txt буде там у вашому поточному робочому каталозі


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

1
hdfs dfs -put - це команда для переміщення файлів з локального FS на HDFS. hdfs dfs -get - це правильний варіант
b_rousseau
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.