web-dev-qa-db-fra.com

Quel est le meilleur module pour interagir avec HDFS avec Python3?

Je vois qu'il y a hdfs3, snakebite et quelques autres. Lequel est le mieux pris en charge et le plus complet?

15
Farhat

Autant que je sache, il n'y a pas autant de possibilités qu'on pourrait le penser. Mais je suggère le Python Package hdfs 2.0.12 qui peut être téléchargé le site Web ou depuis le terminal en exécutant:

pip install hdfs

Quelques fonctionnalités:

  • Liaisons Python (2 et 3) pour l'API WebHDFS (et HttpFS), prenant en charge les clusters sécurisés et non sécurisés.
  • Interface de ligne de commande pour transférer des fichiers et démarrer un shell client interactif, avec des alias pour une mise en cache d'URL de namenode pratique.
  • Fonctionnalités supplémentaires grâce aux extensions optionnelles: avro, pour lire et écrire des fichiers Avro directement depuis HDFS. dataframe, pour charger et enregistrer Pandas dataframes. kerberos, pour prendre en charge les clusters authentifiés Kerberos.
7
user6165050

J'ai essayé snakebite, hdfs3 et hdfs.

Snakebite ne prend en charge que le téléchargement (pas de téléchargement), donc ce n'est pas pour moi.

Sur ces 3 seuls hdfs3 prend en charge la configuration HA, donc c'était mon choix, mais je n'ai pas réussi à le faire fonctionner avec réseaux multi-hôtes en utilisant des noms d'hôte de datanode (problème décrit ici: https : //rainerpeter.wordpress.com/2014/02/12/connect-to-hdfs-running-in-ec2-using-public-ip-addresses/ )

J'ai donc fini par utiliser hdfs (2.0.16) car il prend en charge les téléchargements. J'ai dû ajouter une solution de contournement en utilisant bash pour prendre en charge HA.

PS. Il y a un article intéressant comparant Python bibliothèques développées pour interagir avec le système de fichiers Hadoop sur http://wesmckinney.com/blog/python-hdfs-interfaces/

6
riemann

pyarrow, l'implémentation python de la flèche Apache a un client HDFS bien entretenu et documenté: https://arrow.Apache.org/docs/python/filesystems .html

3
Falco Winkler

Il y a pydoop, ce qui est assez pratique.

https://github.com/crs4/pydoop

0
Sergey Zakharov