Какой самый лучший модуль для взаимодействия с HDFS с Python3?
Я вижу, что есть hdfs3, змеиный укус и некоторые другие. Какой из них лучше всего поддерживается и является всеобъемлющим?
5 ответов
Насколько я знаю, возможностей не так много, как можно подумать. Но я бы предложил официальный пакет Python hdfs 2.0.12
который можно загрузить с веб-сайта или из терминала, запустив:
pip install hdfs
Некоторые из особенностей:
- Привязки Python (2 и 3) для API WebHDFS (и HttpFS), поддерживающие как безопасные, так и небезопасные кластеры.
- Интерфейс командной строки для передачи файлов и запуска интерактивной клиентской оболочки с псевдонимами для удобного кэширования URL namenode.
- Дополнительные функции через дополнительные расширения: avro, для чтения и записи файлов Avro непосредственно из HDFS. DataFrame, чтобы загрузить и сохранить Pandas DataFrames. Kerberos, для поддержки кластеров с проверкой подлинности Kerberos.
pyarrow
Реализация Apache arrow на Python имеет хорошо поддерживаемый и задокументированный клиент HDFS: https://arrow.apache.org/docs/python/filesystems.html
Я пробовал укусы змей, hdfs3 и hdfs.
Snakebite поддерживает только загрузку (без загрузки), так что мне не стоит.
Из этих 3 только hdfs3 поддерживает настройку HA, так что это был мой выбор, однако мне не удалось заставить его работать с многосетевыми сетями, использующими имена хостов datanode (проблема описана здесь: https://rainerpeter.wordpress.com/2014/02/12/connect-to-hdfs-running-in-ec2-using-public-ip-addresses/)
В итоге я использовал hdfs (2.0.16), так как он поддерживает загрузку. Мне пришлось добавить обходной путь, используя bash для поддержки HA.
PS. Есть интересная статья, в которой сравниваются библиотеки Python, разработанные для взаимодействия с файловой системой Hadoop, по адресу http://wesmckinney.com/blog/python-hdfs-interfaces/
Есть pydoop
, что весьма удобно.
Я обнаружил, что pyhdfs-client действительно хорош для больших файлов. (Файл, занимающий 1 час с webhdfs, загрузился с ним за 18 минут).
pip install pyhdfs-client
Единственным недостатком является то, что он новый, и его интерфейс не такой чистый по сравнению с другими клиентами hdfs. Документация отсутствует, но вы можете проверить использование здесь: https://pypi.org/project/pyhdfs-client/