我有一个运行在centos 6.5上的hadoop集群。我目前正在使用Python2.6。由于不相关的原因,我无法升级到python2.7。由于这个不幸的事实,我不能安装pydoop。在hadoop集群中,我有大量名为raw“yearmonthdaytimehour.txt”的原始数据文件,括号中的所有内容都是数字。有没有办法在python中列出hadoop目录中的所有文件?所以程序会创建一个类似的列表。
listoffiles=['raw160317220001.txt', 'raw160317230001.txt', ....]
这将使我需要做的一切变得更加容易,因为要从第2天第15小时开始获取文件,我只需要调用dothing(listoffiles[39])。我为什么要这样做,有一些不相关的复杂因素。
我知道有一种方法可以用本地目录轻松地做到这一点,但是hadoop让一切变得更加复杂。
3条答案
按热度按时间wqsoz72f1#
我推荐这个python项目:https://github.com/mtth/hdfs 它使用httpfs,实际上非常简单和快速。我在我的kerberos集群上使用了它,它的工作非常出色。您只需要设置namenode或httpfs服务url。
r7knjye22#
如果pydoop不起作用,您可以尝试snakebite库,它应该与python2.6一起工作。另一种选择是启用webhdfsapi,并将其直接用于请求或类似的内容。
蛇咬伤:
lp0sw83n3#
我建议去看看hdfs3
像snakebite一样,hdfs3使用protobufs进行通信,并绕过jvm。与snakebite不同,hdfs3提供kerberos支持