我正在定义 bottle
api,我需要从客户端接受一个文件,然后将该文件保存到本地系统上的hdfs。
代码看起来像这样。
@route('/upload', method='POST')
def do_upload():
import pdb; pdb.set_trace()
upload = request.files.upload
name, ext = os.path.splitext(upload.filename)
save_path = "/data/{user}/{filename}".format(user=USER, filename=name)
hadoopy.writetb(save_path, upload.file.read())
return "File successfully saved to '{0}'.".format(save_path)
问题是 request.files.upload.file
是类型的对象 cStringIO.StringO
可以转换成 str
用一个 .read()
方法。但是 hadoopy.writetb(path, content)
希望内容是其他格式,而服务器则坚持使用该格式。它不会给出异常,也不会给出错误或任何结果。只是站在那里,好像它是在无限的循环。
有人知道如何在瓶api中将传入文件写入hdfs吗?
1条答案
按热度按时间cuxqih211#
在hadoopy文档中,它看起来像
writetb
应该是成对的可数;但是你在传递字节。…hadoopy.writetb命令,它接受一个键/值对的迭代器。。。
你试过穿一双吗?而不是你在做什么,
试试这个:
(我不熟悉hadoop,所以我不清楚hadoop的语义是什么
path
是的,但可能对了解hdfs的人来说是有意义的。)