是否可以将文件保存在 Hadoop 中而不将它们保存在本地文件系统中?我想做如下所示的事情,但是我想直接在 HDFS 中保存文件。目前我将文件保存在文档目录中,然后我才能将它们保存在 HDFS 中,例如使用 hadoop fs -put
。
class DataUploadView(GenericAPIView):
def post(self, request):
myfile = request.FILES['photo']
fs = FileSystemStorage(location='documents/')
filename = fs.save(myfile.name, myfile)
local_path = 'my/path/documents/' + str(myfile.name)
hdfs_path = '/user/user1/' + str(myfile.name)
run(['hadoop', 'fs', '-put', local_path, hdfs_path], shell=True)
最佳答案
Hadoop 具有 REST API,允许您通过 WebHDFS 创建文件。
因此,您可以基于 REST API 使用 requests
等 python 库编写自己的 create
来执行 HTTP。但是,也有几个支持 Hadoop/HDFS 并且已经使用 REST API 或通过 libhdfs
使用 RPC 机制的 python 库。
- pydoop
- hadoopy
- 蛇咬伤
- pywebhdfs
- hdfscli
- pyarrow
只需确保您寻找如何创建文件而不是让 python 库调用 hdfs dfs -put
或 hadoop fs -put
。
有关详细信息,请参阅以下内容:
- pydoop vs hadoopy - hadoop python client
- List all files in HDFS Python without pydoop
- A Guide to Python Frameworks for Hadoop
- Native Hadoop file system (HDFS) connectivity in Python
- PyArrow
- https://github.com/pywebhdfs/pywebhdfs
- https://github.com/spotify/snakebite
- https://crs4.github.io/pydoop/api_docs/hdfs_api.html
- https://hdfscli.readthedocs.io/en/latest/
- WebHDFS REST API:Create and Write to a File
关于python - 是否可以将文件保存在 Hadoop 中而不将它们保存在本地文件系统中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51546108/