如何将文件从HDFS复制到本地文件系统。在文件下没有物理位置,甚至没有目录。我应该如何将它们移动到本地进行进一步验证?我尝试过使用WinSCP。
bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
namenode_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
。
hadoop dfs -copyToLocal <input> <output>
<input>
:要复制的HDFS目录路径(例如/mydata)<output>
:目标目录路径(例如~/Documents)hdfs dfs -copyToLocal <input> <output>
。hadoop fs -ls
浏览到那里吗? - Dennis Jaheruddinhadoop dfs -get <input> <output>
即可,它会正常工作。要列出文件,请使用 hadoop dfs -ls <path>
。 - jbaranski1.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
会将所有这些文件合并并放入本地目录中的一个文件中。向@Eponymous致敬。 - didi这个方法适用于我在Ubuntu虚拟机上的操作。
hdfs dfs -copyToLocal [Hadoop目录] [本地目录]
1.- 记住你给文件起的名字,不要使用hdfs dfs -put,而是使用'get'。如下所示。
$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