我想调用hdfs restapi来上传一个文件 httplib
.
我的程序创建了该文件,但其中没有内容。
这是我的密码:
import httplib
conn=httplib.HTTPConnection("localhost:50070")
conn.request("PUT","/webhdfs/v1/levi/4?op=CREATE")
res=conn.getresponse()
print res.status,res.reason
conn.close()
conn=httplib.HTTPConnection("localhost:50075")
conn.connect()
conn.putrequest("PUT","/webhdfs/v1/levi/4?op=CREATE&user.name=levi")
conn.endheaders()
a_file=open("/home/levi/4","rb")
a_file.seek(0)
data=a_file.read()
conn.send(data)
res=conn.getresponse()
print res.status,res.reason
conn.close()
==================================================
这是回报:
307临时\u重定向201已创建
好的,文件已经创建,但是没有发送内容。
当我评论 #conn.send(data)
,结果是一样的,还是没有内容。
可能文件读取或发送错误,不确定。
你知道这是怎么发生的吗?
1条答案
按热度按时间k7fdbhmy1#
看起来您的代码没有在第二个put请求中使用307中的“location”头。
我一直在研究一个可能有用的python webhdfs Package 器的分支,您可以在这里看到完整的代码:https://github.com/carlosmarin/webhdfs-py/blob/master/webhdfs/webhdfs.py
您感兴趣的方法是: