我需要一些帮助。我正在使用 python 代码从网页下载文件并将其放置在本地文件系统中,然后使用 put 命令将其传输到 HDFS,然后对其执行操作。
但在某些情况下,文件可能会非常大,下载到本地文件系统并不是一个正确的过程。所以我希望文件直接下载到 HDFS 中,而不使用本地文件系统。
任何人都可以建议我一些方法,哪一种是最好的方法? 如果我的问题有任何错误,请指正。
最佳答案
您可以直接从下载中传输它以避免将其写入磁盘,例如:
curl server.com/my/file | hdfs dfs -put - destination/file
-put
的 -
参数告诉它从标准输入读取(参见 documentation )。
不过,这仍然会通过您的本地计算机路由下载,只是不会通过您的本地文件系统。如果您想根本不使用本地机器来下载文件,您可以编写一个 map-only MapReduce 作业,其任务接受例如一个包含要下载的文件列表的输入文件,然后下载它们并流出结果。请注意,这将要求您的集群开放访问互联网,这通常是不可取的。
关于hadoop - 如何直接从网页下载文件,不使用本地,直接将文件放在HDFS中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47658385/