如何直接在hdfs中放置一个文件而不使用本地文件,直接从网页下载一个文件?

7eumitmz  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(367)

我需要帮助。我正在使用python代码从网页下载一个文件,并将其放置在本地文件系统中,然后使用put命令将其传输到hdfs中,然后对其执行操作。
但在某些情况下,文件大小可能非常大,下载到本地文件系统是不正确的。所以我希望文件直接下载到hdfs中,而不需要使用本地文件系统。
有谁能给我建议一些方法哪一种是最好的方法?如果我的问题有任何错误,请纠正我。谢谢您。

q5iwbnjs

q5iwbnjs1#

您可以通过管道直接从下载中下载,以避免将其写入磁盘,例如:

curl server.com/my/file | hdfs dfs -put - destination/file

这个 - 参数到 -put 告诉它从stdin读取(参见文档)。
不过,这仍然会通过本地计算机路由下载,而不是通过本地文件系统。如果您想下载文件而不使用本地计算机,则可以编写一个任务接受的仅Mapmapreduce作业(例如,包含要下载的文件列表的输入文件),然后下载这些文件并输出结果。请注意,这将要求您的集群具有对internet的开放访问,这通常是不可取的。

相关问题