2015-04-08 3 views
1

Я хочу передать слишком много мелких файлов (например, файлов 200k) в zip-файл в HDFS с локальной машины. Когда я разархивирую zip-файл и транслирую файлы в HDFS, это занимает много времени. Есть ли в любом случае, я могу перенести исходный zip-файл в HDFS и разархивировать его там?Передача большого количества небольших файлов в файловую систему Hadoop

+0

Почему вы будете быстрее? –

+0

С помощью команды hadoop dfs -put требуется много времени передавать много мелких файлов с локальной машины. Я получил пару предупреждающих сообщений, потому что это занимает много времени, и мне также больше платят Amazon. Разархивировать файл в одной и той же файловой системе должен быть быстрее, чем обычно копировать из файловой системы в другую. – Mohsen

ответ

0

Если ваш файл находится в ГБ, то эта команда, несомненно, поможет избежать ошибок в пространстве, поскольку нет необходимости разархивировать файл в локальной файловой системе.

команда ввода в hadoop поддерживает чтение ввода от stdin. Для чтения ввода из stdin используйте '-' в качестве исходного файла.

Сжатый файла: compressed.tar.gz

Gunzip -c compressed.tar.gz | hasoop fs -put -/user/files/uncompressed_data

Только недостаток: Единственным недостатком этого подхода является то, что в HDFS данные будут объединены в один файл, даже если локальный сжатый файл содержит более одного файла.

http://bigdatanoob.blogspot.in/2011/07/copy-and-uncompress-file-to-hdfs.html

+1

Правильно, но я хочу иметь одиночные файлы на HDFS, я не собираюсь их объединять. – Mohsen

Смежные вопросы