我正在尝试snakebite
。我开始了以下客户:
T_IS_SMALLER_OR_EQUAL
首先,我尝试列出用户目录:
from snakebite.client import Client
client = Client("my.host.com", 8020, effective_user='datascientist')
这很好用并打印了一对词典;一个目录中的每个项目。其中一个项目是我希望看到的文件for x in client.ls(['/user/datascientist']):
print x
。为此,我相信我应该使用Client.cat
:
foobar.txt
然而,这并没有奏效。我收到以下错误消息:
for cat in client.cat(['/user/datascientist/da-foobar.txt',]):
print(cat)
for item in cat:
print(item)
我做错了什么?
BTW:使用ConnectionFailureException: Failure to connect to data node at (10.XXX.YYY.ZZZ:50010)
中的PyWebHdfsClient
我设法通过启动具有相同地址但端口为50070的客户端来查看该文件。我不知道这是否相关。
编辑1:我还尝试使用pywebhdfs.webhdfs
并遇到了同样的错误。我想这并不奇怪。
顺便说一下,文件的内容是snakebite.client.Client.text
。
答案 0 :(得分:0)
我找到了解决方案。看起来列表操作可以仅在名称节点上完成。相反,文本文件的打印需要访问数据节点!通过实例化客户端如下
client = Client("stage-gap-namenode-2.srv.glispa.com", 8020, effective_user='datascientist',
use_datanode_hostname=True)
cat
操作可以正常工作,因为它不使用内部IP,而是使用主机名。我总结了minimal example。