python - 是否可以将文件保存在 Hadoop 中而不将它们保存在本地文件系统中?

标签 python django hadoop hdfs

是否可以将文件保存在 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 -puthadoop fs -put

有关详细信息,请参阅以下内容:

关于python - 是否可以将文件保存在 Hadoop 中而不将它们保存在本地文件系统中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51546108/

相关文章:

python - 比较两个自定义列表python

python - 无法将 Pandas 数据框保存到csv

django - 在保存时关闭 django 管理员添加相关对象弹出窗口

hadoop - Hbase 中的领先和落后

hadoop - FileNotFoundException序列文件Mahout

python - Gitlab CI - Django 功能测试 - split

python - 如何在 Python 中将 if/else 压缩为一行?

django - 从 Django 连接到多个 MongoDB 实例

python - Django 导入问题

hadoop - Spark 作业出错,出现 : Too many elements to create a power set 34