0

我正在尝试snakebite。我启动了以下客户端:

from snakebite.client import Client
client = Client("my.host.com", 8020, effective_user='datascientist')

首先,我尝试列出用户目录:

for x in client.ls(['/user/datascientist']):
    print x

这很好用并打印了几本字典;目录中的每个项目一个。其中一项是foobar.txt我想查看的文件。为此,我相信我应该使用Client.cat

for cat in client.cat(['/user/datascientist/da-foobar.txt',]):
    print(cat)
    for item in cat:
        print(item)

然而,这并没有奏效。我收到以下错误消息:

ConnectionFailureException: Failure to connect to data node at (10.XXX.YYY.ZZZ:50010)

我做错了什么?

顺便说一句:使用PyWebHdfsClientfrompywebhdfs.webhdfs我设法通过启动具有相同地址但端口 50070 的客户端来查看文件。我不知道这是否相关。

编辑1:我也尝试使用snakebite.client.Client.text并得到同样的错误。我想这并不奇怪。

顺便说一句,文件的内容是my file is this\ntest file.

4

1 回答 1

0

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

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

cat操作有效,因为它不使用内部 IP,而是使用主机名。我总结了一个最小的例子

于 2017-01-04T15:26:12.090 回答