我需要一些帮助。我正在使用python代码从网页下载文件并将其放在本地文件系统中,然后使用put命令将其传输到HDFS,然后对其执行操作。
但是在某些情况下,文件大小会非常大,而下载到本地文件系统则不是正确的过程。所以我希望直接使用本地文件系统将文件下载到HDFS中。
任何人都可以向我推荐一些方法,哪种方法最好? 如果我的问题有任何错误,请纠正我。 谢谢。
答案 0 :(得分:2)
您可以直接从下载中对其进行管道处理,以避免将其写入磁盘,例如:
curl server.com/my/file | hdfs dfs -put - destination/file
-
的{{1}}参数告诉它从标准输入读取(参见documentation)。
但仍然会通过本地计算机路由下载,而不是通过本地文件系统。如果要在不使用本地计算机的情况下下载文件,可以编写一个仅限地图的MapReduce作业,其任务可以接受,例如一个输入文件,包含要下载的文件列表,然后下载它们并流出结果。请注意,这将要求您的群集具有对互联网的开放访问权限,这通常是不可取的。