我在试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)我做错什么了?
顺便说一句:使用来自PyWebHdfsClient的pywebhdfs.webhdfs,我通过启动一个具有相同地址但端口50070的客户机,成功地看到了这个文件。我不知道这是否相关。
编辑1:我也尝试使用snakebite.client.Client.text并得到了相同的错误。我想这并不奇怪。
顺便说一下,文件的内容是my file is this\ntest file。
发布于 2017-01-04 15:26:12
我找到了解决办法。清单操作似乎可以单独在名称节点上完成。相反,打印文本文件需要访问数据节点!通过实例化客户机,如下所示
client = Client("stage-gap-namenode-2.srv.glispa.com", 8020, effective_user='datascientist',
use_datanode_hostname=True)cat操作的工作方式不是使用内部IP,而是使用主机名。我总结了一个极小例子。
https://stackoverflow.com/questions/41465459
复制相似问题