无法使用snakebite获取和显示文件

时间:2017-01-04 13:52:40

标签: python hadoop snakebite

我正在尝试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

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。看起来列表操作可以仅在名称节点上完成。相反,文本文件的打印需要访问数据节点!通过实例化客户端如下

client = Client("stage-gap-namenode-2.srv.glispa.com", 8020, effective_user='datascientist', 
                use_datanode_hostname=True)

cat操作可以正常工作,因为它不使用内部IP,而是使用主机名。我总结了minimal example