【问题标题】:What's the best module for interacting with HDFS with Python3?使用 Python3 与 HDFS 交互的最佳模块是什么?
【发布时间】:2021-03-26 06:06:21
【问题描述】:

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

【问题讨论】:

  • 截至 2019 年,pypi 上 snakebite 的最后更新版本是 2016 年 8 月 8 日。

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


【解决方案1】:

据我所知,可能性并不像人们想象的那么多。但我建议使用官方 Python 包 hdfs 2.0.12,可以从 website 下载或通过运行从终端下载:

pip install hdfs

一些特点:

  • WebHDFS(和 HttpFS)API 的 Python(2 和 3)绑定, 支持安全和不安全的集群。
  • 命令行界面 传输文件并使用别名启动交互式客户端外壳 方便的名称节点 URL 缓存。
  • 附加功能通过 可选扩展:avro,直接读取和写入 Avro 文件 高清文件系统。数据框,用于加载和保存 Pandas 数据框。 kerberos,到 支持经过 Kerberos 身份验证的集群。

【讨论】:

    【解决方案2】:

    我尝试过蛇咬、hdfs3 和 hdfs。

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

    在这 3 个中,只有 hdfs3 支持 HA 设置,所以这是我的选择,但是我没有设法使用 datanode 主机名使其与 multihomed networks 一起工作(此处描述的问题:https://rainerpeter.wordpress.com/2014/02/12/connect-to-hdfs-running-in-ec2-using-public-ip-addresses/

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

    附言。 http://wesmckinney.com/blog/python-hdfs-interfaces/ 有一篇有趣的文章比较了为与 Hadoop 文件系统交互而开发的 Python 库

    【讨论】:

      【解决方案3】:

      pyarrow,apache arrow 的 python 实现有一个维护良好并记录在案的 HDFS 客户端:https://arrow.apache.org/docs/python/filesystems.html

      【讨论】:

        【解决方案4】:

        pydoop,挺方便的。

        https://github.com/crs4/pydoop

        【讨论】:

          【解决方案5】:

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

          pip install pyhdfs-client
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-04-11
            • 1970-01-01
            • 2020-08-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多