Я пытаюсь загрузить gzipped файлы из каталога на удаленном компьютере в HDFS моей локальной машины. Я хочу иметь возможность читать gzipped файлы с удаленной машины и транслировать их прямо в HDFS на моем локальном компьютере. Это то, что у меня на локальной машине:Труба нескольких файлов в HDFS
ssh remote-host "cd /files/wanted; tar -cf - *.gz" | tar -xf - | hadoop fs -put - "/files/hadoop"
Это, видимо, копирует все файлы с gzip'нутыми из удаленного пути, указанному в пути, где я выполнить команду и загружает пустой файл -
в HDFS. То же самое происходит, если я попробовать его без tar
также:
ssh remote-host "cd /files/wanted; cat *.gz" | hadoop fs -put - "/files/hadoop"
Просто для чертовыми и хихикает, чтобы увидеть, если я, возможно, не хватает что-то простое, я попытался следующие на моей локальной машине:
tar -cf - *.gz | tar -xf -C tmp
Это сделало то, что я ожидал, он взял все файлы gzipped в текущем каталоге и поместил их в существующий каталог tmp
.
Затем с частью Hadoop на локальной машине:
cat my_file.gz | hadoop fs -put - "/files/hadoop"
Это также сделал то, что я ожидал, он положил мой сжатый файл в /files/hadoop
на HDFS.
Невозможно ли подключить несколько файлов в HDFS?
я прочитал его снова и снова, и я не мог понять, какая часть точно не работает вы: -/ – maksimov
@maksi mov, поэтому он копирует файлы в первых двух командах с удаленного хоста на локальный хост, который не должен произойти (так я думал). Он должен перейти прямо в HDFS, по какой-то причине сбивая несколько файлов в HDFS, которые не работают. – kurczynski
Это актуально: http://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk, однако они идут другим путем, но это может дать вам некоторые подсказки. Обратите внимание, что OP обнаружил проблему с производительностью при прямой пересылке в hdf. – maksimov