Python使用HDFS的方式

时间:2015-03-30 11:27:55

标签: python hdfs

我有一个包含大量文件的HDFS目录。当我尝试通过Web界面进入目录时,浏览器挂起。当我尝试通过命令行(hadoop fs -ls /user/loom/many_files_dir/)列出文件时,我得到了

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
[Unloading class sun.reflect.GeneratedMethodAccessor1]
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.util.Arrays.copyOf(Arrays.java:2882)
        ......

我希望有一些python方法可以枚举目录中的文件(或者其他脚本语言)。你能跟我说说吗?

2 个答案:

答案 0 :(得分:1)

我建议您使用snakebite http://snakebite.readthedocs.org/en/latest/client.html#snakebite.client.Client.ls

client = snakebite.client.Client(host, port=8020)
list(client.ls(["/user/loom/many_files_dir/"]))

这直接与namenode对话以获取列表,而不调用本地JVM。

答案 1 :(得分:1)

您现在可能对此处的新python-hdfs交互操作感兴趣:http://hdfs3.readthedocs.org/en/latest/

from hdfs3 import HDFileSystem
hdfs = HDFileSystem(host=host, port=8020)
hdfs.ls("/user/loom/many_files_dir/")