2

我试图找出一种方法来从存储在 HDFS 服务器上的多个文本文件中读取数据行,在 Python 中。我需要解析每一行并只保留部分数据,所以我不想将文件保存在本地。

我需要一种连接到服务器的方法,查看特定文件夹中的所有文件,并从每个文件中读取所有行并对它们执行(与此问题无关)操作。

4

2 回答 2

1

问题评论中提到的 GitHub 存储库 python-hdfs 通过 libhdfs(HDFS 的 C 接口)从 Python 查询 HDFS。最近引入了WebHDFS,它为HDFS提供了一个REST接口。https://github.com/drelu/webhdfs-py是 WebHDFS 的 Python 客户端,可能比 python-hdfs 更好。

于 2012-05-23T07:04:51.163 回答
1

这样做的pythonic方法是使用itertools.chain。但是您可以编写一个小型实用程序生成器函数,它迭代文件,然后迭代文件中的行并一次生成一行。像这样的东西:

def lines_in_files(connection):
    for f in # some code which fetches a files at a time from the connection
         for line in f:
             yield line

如果您获取的文件对象不支持所有文件方法,请在执行之前将其内容包装在 StringIO 中for line in

于 2015-11-05T19:25:10.627 回答