如何通过直接从网页下载文件而不使用本地直接将文件放置在HDFS中?

Rah*_*hul 2 hadoop hdfs hadoop-streaming hadoop2

我需要帮助。我正在使用 python 代码从网页下载文件并将其放置在本地文件系统中,然后使用 put 命令将其传输到 HDFS,然后对其执行操作。

但是在某些情况下,文件大小会非常大,下载到本地文件系统不是一个正确的过程。因此,我希望将文件直接下载到 HDFS 中,而根本不使用本地文件系统。

任何人都可以向我建议一些方法,哪种方法是最好的方法?如果我的问题有任何错误,请纠正我。

kro*_*rog 5

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

curl server.com/my/file | hdfs dfs -put - destination/file
Run Code Online (Sandbox Code Playgroud)

-对参数-put告诉它从标准输入读取(见文档)。

这仍然会通过您的本地机器路由下载,但不会通过您的本地文件系统。如果您想在不使用本地机器的情况下下载文件,您可以编写一个仅映射的 MapReduce 作业,其任务接受例如包含要下载的文件列表的输入文件,然后下载它们并输出结果。请注意,这将要求您的集群具有对 Internet 的开放访问权限,这通常是不可取的。