我在试 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
.
1条答案
按热度按时间x759pob21#
我找到了解决办法。似乎列表操作可以单独在name节点上完成。相反,文本文件的打印需要访问数据节点!通过如下示例化客户机
这个
cat
操作不使用内部ip,而是使用主机名。我总结了一个最小的例子。