__file__
путь текущего модуля, вызов выполняется.
Установите Cygwin, установите Hadoop локально (вам просто нужны двоичный файл и конфигурации, которые указывают на вашу сеть - нет необходимости запускать службы), запустите hadoop fs -copyFromLocal / path / to / localfile / hdfs / path /
Вы также можете использовать новый рабочий стол Cloudera для загрузки файла через веб-интерфейс, хотя это может быть не лучшим вариантом для гигантских файлов.
Также есть наложение WebDAV для HDFS, но я не знаю, насколько это стабильно / надежно.
В Java есть API. Вы можете использовать его, включив код Hadoop в свой проект. JavaDoc в целом очень полезен, но, конечно, вы должны знать, что ищете * g * http://hadoop.apache.org/common/docs/
Для вашей конкретной проблемы посмотрите: http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/fs/FileSystem.html (это относится к последнему выпуску, обратитесь к другим JavaDocs для других версий!)
Типичный вызов:
Filesystem.get (new JobConf ()). Create (новый путь («однако.файл»));
Что возвращает вам поток, который вы можете обрабатывать с помощью обычного JavaIO.
Для решения проблемы загрузки данных, которые мне нужно было поместить в HDFS, я решил решить проблему.
Вместо того, чтобы загружать файлы в HDFS с сервера, на котором они находились, я написал задание Java Map / Reduce, в котором преобразователь считывает файл с файлового сервера (в данном случае через https), затем записать его непосредственно в HDFS (через Java API ).
Список файлов считывается из ввода. Затем у меня есть внешний скрипт, который заполняет файл списком файлов для выборки, загружает файл в HDFS (используя hadoop dfs -put ), а затем запускаю задание сопоставления / сокращения с приличным количеством картографов. .
Это дает мне отличную производительность передачи, так как несколько файлов читаются / записываются одновременно.
Может быть, это не тот ответ, который вы искали, но, надеюсь, это поможет: -).