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方法来枚举目录中的文件(或者其他脚本语言)。你能告诉我这件事吗?

我建议你用蛇咬伤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。

您现在可能对新的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/")