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

时间:2017-12-05 16:32:32

标签: hadoop hdfs spark-streaming hadoop2 hadoop-streaming

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

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

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

1 个答案:

答案 0 :(得分:2)

您可以直接从下载中对其进行管道处理,以避免将其写入磁盘,例如:

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

-的{​​{1}}参数告诉它从标准输入读取(参见documentation)。

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