【问题标题】:Unable to fetch and display files using snakebite无法使用蛇咬获取和显示文件
【发布时间】:2017-01-04 13:52:40
【问题描述】:

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

我做错了什么?

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

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

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

【问题讨论】:

    标签: python hadoop snakebite


    【解决方案1】:

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

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

    cat 操作不使用内部 IP,而是使用主机名。我总结了一个minimal example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多