如何将瓶api中的传入文件保存到hdfs

2024-04-24 11:29:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在定义bottleapi,在这里我需要从客户机接受一个文件,然后将该文件保存到本地系统上的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的对象,可以用.read()方法将其转换为str。但是hadoopy.writetb(path, content)希望内容是其他格式的,而服务器会坚持这一点。它不会给出异常,也不会给出错误或任何结果。只是站在那里,好像它是在无限的循环。你知道吗

有人知道如何在瓶api中将传入文件写入HDFS吗?你知道吗


Tags: 文件pathnameformatrequestsavefileshdfs
1条回答
网友
1楼 · 发布于 2024-04-24 11:29:52

hadoopy documentation来看,writetb的第二个参数应该是成对的iterable;但是您传递的是字节。你知道吗

...the hadoopy.writetb command which takes an iterator of key/value pairs...

你试过穿一双吗?而不是你在做什么

hadoopy.writetb(save_path, upload.file.read())  # 2nd param is wrong

试试这个:

hadoopy.writetb(save_path, (path, upload.file.read()))

(我不熟悉Hadoop,所以我不清楚path的语义是什么,但可能对了解HDFS的人来说是有意义的。)

相关问题 更多 >