使用Python3与HDFS交互的最佳模块是什么?

时间:2016-10-27 12:57:09

标签: python-3.x hdfs python-hdfs

我看到有hdfs3,snakebite和其他一些。哪一个是最好的支持和全面的?

5 个答案:

答案 0 :(得分:5)

据我所知,没有人想象的那么多。但我建议使用官方Python包hdfs 2.0.12,可以通过以下方式下载website或从终端下载:

pip install hdfs

部分功能:

  • WebHDFS(和HttpFS)API的Python(2和3)绑定, 支持安全和不安全的集群。
  • 命令行界面 使用别名传输文件并启动交互式客户端shell 方便的namenode URL缓存。
  • 通过附加功能 可选扩展:avro,直接从中读取和写入Avro文件 HDFS。数据帧,用于加载和保存Pandas数据帧。 kerberos,to 支持Kerberos认证集群。

答案 1 :(得分:5)

我曾尝试过snakebite,hdfs3和hdfs。

Snakebite只支持下载(不上传),所以不适合我。

在这3个中,只有hdfs3支持HA设置,所以这是我的选择,但我没有设法使用datanode主机名使其与multihomed networks一起使用(此处描述的问题:{{3} })

所以我最终使用hdfs(2.0.16),因为它支持上传。我不得不使用bash添加一些解决方法来支持HA。

PS。这篇有趣的文章比较了为在https://rainerpeter.wordpress.com/2014/02/12/connect-to-hdfs-running-in-ec2-using-public-ip-addresses/

上与Hadoop文件系统进行交互而开发的Python库。

答案 2 :(得分:2)

pyarrow,apache arrow的python实现具有维护良好并有文档证明的HDFS客户端:https://arrow.apache.org/docs/python/filesystems.html

答案 3 :(得分:0)

pydoop,非常方便。

https://github.com/crs4/pydoop

答案 4 :(得分:0)

我发现 pyhdfs-client 非常适合大文件。 (使用 webhdfs 需要 1 小时的文件在 18 分钟内加载)。

pip install pyhdfs-client

唯一的缺点是,它是新的,与其他 hdfs 客户端相比,它的界面并不干净。缺少文档,但您可以在此处查看使用情况:https://pypi.org/project/pyhdfs-client/