我正在定义HDFS,我需要在其中接受来自客户端的文件,然后将该文件保存到本地系统上的bottle。
代码看起来像这样。
@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类型的对象,可以使用.read()方法将其转换为str。但hadoopy.writetb(path, content)希望内容是某种其他格式,而服务器则停留在这一点上。它不会给出异常,也不会给出错误或任何结果。就像它在无限循环中一样站在那里。
有人知道如何将瓶子api中的传入文件写入HDFS吗?
发布于 2017-09-11 01:15:17
从hadoopy documentation看起来,writetb的第二个参数应该是可迭代的对;但是您传入的是字节。
...the hadoopy.writetb命令,它接受键/值对的迭代器...
你有没有试过传一对?而不是你在做什么,
hadoopy.writetb(save_path, upload.file.read()) # 2nd param is wrong试试这个:
hadoopy.writetb(save_path, (path, upload.file.read()))(我不熟悉Hadoop,所以我不清楚path的语义是什么,但对于了解HDFS的人来说,它大概是有意义的。)
https://stackoverflow.com/questions/46124829
复制相似问题