【发布时间】:2013-07-24 03:45:50
【问题描述】:
如何将文件从 HDFS 复制到本地文件系统。文件下没有文件的物理位置,甚至没有目录。我怎样才能将它们移动到我的本地进行进一步验证。我通过 winscp 进行了尝试。
【问题讨论】:
如何将文件从 HDFS 复制到本地文件系统。文件下没有文件的物理位置,甚至没有目录。我怎样才能将它们移动到我的本地进行进一步验证。我通过 winscp 进行了尝试。
【问题讨论】:
bin/hadoop fs -get /hdfs/source/path /localfs/destination/pathbin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/pathnamenode_machine:50070),浏览到您要复制的文件,向下滚动页面并点击下载文件。 【讨论】:
在 Hadoop 2.0 中,
hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>
在哪里,
hdfs_input_file_path可能从http://<<name_node_ip>>:50070/explorer.html获得
output_path是文件的本地路径,文件要复制到的位置。
您也可以使用get 代替copyToLocal。
【讨论】:
为了将文件从 HDFS 复制到本地文件系统,可以运行以下命令:
hadoop dfs -copyToLocal <input> <output>
<input>:要复制的HDFS目录路径(如/mydata)<output>:目标目录路径(如~/Documents)更新:Hadoop 3 中已弃用 Hadoop
使用hdfs dfs -copyToLocal <input> <output>
【讨论】:
hadoop fs -ls浏览那里吗?
您可以通过这两种方式完成。
1.hadoop fs -get <HDFS file path> <Local system directory path>
2.hadoop fs -copyToLocal <HDFS file path> <Local system directory path>
例如:
我的文件位于 /sourcedata/mydata.txt 我想将文件复制到此路径中的本地文件系统 /user/ravi/mydata
hadoop fs -get /sourcedata/mydata.txt /user/ravi/mydata/
【讨论】:
如果您的源“文件”被拆分为位于同一目录树中的多个文件(可能是 map-reduce 的结果),您可以将其复制到本地文件:
hadoop fs -getmerge /hdfs/source/dir_root/ local/destination
【讨论】:
-getmerge 将合并所有这些并放入本地目录中的 1 个文件中。感谢@Eponymous
这在我的 Ubuntu 虚拟机实例上对我有用。
hdfs dfs -copyToLocal [hadoop 目录] [本地目录]
【讨论】:
1.- 记住您为文件指定的名称,而不是使用 hdfs dfs -put。请改用“获取”。见下文。
$hdfs dfs -get /output-fileFolderName-In-hdfs
【讨论】:
如果您使用的是 docker,则必须执行以下步骤:
将文件从 hdfs 复制到 namenode (hadoop fs -get output/part-r-00000 /out_text)。 “/out_text”将存储在namenode上。
通过(docker cp namenode:/out_text output.txt)将文件从namenode复制到本地磁盘
output.txt 将在您当前的工作目录中
【讨论】:
bin/hadoop fs -put /localfs/destination/path /hdfs/source/path
【讨论】: