我试图找到一种方法来读取存储在HDFS服务器上的多个文本文件中的数据行。 我需要解析每一行并只保留部分数据,所以我不想在本地保存文件。
我需要一种方法来连接服务器,遍历特定文件夹中的所有文件,并从每个文件读取所有行,并对它们执行(与此问题无关)操作。
答案 0 :(得分:1)
在问题的评论中提到的GitHub存储库python-hdfs,通过libhdfs从Python查询HDFS,到HDFS的C接口。最近,WebHDFS被引入,它为HDFS提供了一个REST接口。 https://github.com/drelu/webhdfs-py是WebHDFS的Python客户端,可能是比python-hdfs更好的选择。
答案 1 :(得分:0)
这样做的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
如果获取的文件对象不支持所有文件方法,请在执行for line in
之前将其内容包装在StringIO中。