2017-01-04 40 views
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) 

我在做什麼錯?

順便說一句:使用PyWebHdfsClientpywebhdfs.webhdfs我設法通過啓動一個客戶端使用相同的地址,但端口50070看到該文件。我不知道這是否是相關的。

編輯1:我也嘗試使用snakebite.client.Client.text並得到相同的錯誤。我想這並不奇怪。

順便說一句,該文件的內容是my file is this\ntest file

回答

0

我找到了一個解決方案。似乎列表操作可以單獨在名稱節點上完成。相比之下,文本文件的打印需要訪問數據節點!通過實例化客戶端如下

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

cat操作,因爲它不使用內部IP,但主機名的作品。我總結了一個minimal example