hadoop - 如何直接从网页下载文件,不使用本地,直接将文件放在HDFS中?

标签 hadoop hdfs hadoop2 hadoop-streaming

我需要一些帮助。我正在使用 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/

相关文章:

hadoop - Hadoop 中的 setCompressOutput

hadoop - BDB0091 DB_VERSION_MISMATCH:数据库环境版本与Ambari 2.4.2不匹配

hadoop - 如何在多节点 Hadoop 集群上设置 Spark?

java - 在Java中根据时间戳获取HDFS文件

hadoop - 如何获得在群集中运行NameNode的FSNamesystem?

hadoop - 像wordcount这样的脚本在MapReduce中执行在哪里?

hadoop - 为什么Hadoop名称节点连接到奇怪的[aca8ca1d.ipt.aol.com]主机名?

hadoop - kafka在大数据集群中有什么用?

python - MapReduce:使用Mrjob在网络图中查找三角形

scala - 使用 scalding 读取多个文件并输出单个文件