Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 如何将文件从HDFS复制到本地文件系统_Hadoop_Copy_Hdfs - Fatal编程技术网

Hadoop 如何将文件从HDFS复制到本地文件系统

Hadoop 如何将文件从HDFS复制到本地文件系统,hadoop,copy,hdfs,Hadoop,Copy,Hdfs,如何将文件从HDFS复制到本地文件系统。文件下没有文件的物理位置,甚至没有目录。如何将它们移动到本地进行进一步验证。我通过winscp进行了尝试 bin/hadoop fs-get/hdfs/source/path/localfs/destination/path bin/hadoop fs-copyToLocal/hdfs/source/path/localfs/destination/path 将web浏览器指向HDFS WEBUI(namenode\u machine:50070),浏览到

如何将文件从HDFS复制到本地文件系统。文件下没有文件的物理位置,甚至没有目录。如何将它们移动到本地进行进一步验证。我通过winscp进行了尝试

  • bin/hadoop fs-get/hdfs/source/path/localfs/destination/path
  • bin/hadoop fs-copyToLocal/hdfs/source/path/localfs/destination/path
  • 将web浏览器指向HDFS WEBUI
    namenode\u machine:50070
    ),浏览到要复制的文件,向下滚动页面,然后单击下载文件

  • 为了将文件从HDFS复制到本地文件系统,可以运行以下命令:

    hadoop dfs-copyToLocal

    • :要复制的HDFS目录路径(例如/mydata)
    • :目标目录路径(例如~/Documents)
    • 在Hadoop 2.0中

      hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>
      
      hdfs-dfs-copyToLocal
      
      在哪里,

      • hdfs\u input\u file\u path
        可从
        http://:50070/explorer.html

      • output\u path
        是文件的本地路径,文件将复制到该路径

      • 您也可以使用
        get
        代替
        copyToLocal


        • 您可以通过这两种方式完成

          1.hadoop fs -get <HDFS file path> <Local system directory path>
          2.hadoop fs -copyToLocal <HDFS file path> <Local system directory path>
          

          这在我的Ubuntu虚拟机实例上非常有效

          hdfs dfs-copyToLocal[hadoop目录][local目录]

          如果源“文件”在位于同一目录树中的多个文件(可能是map reduce的结果)中被拆分,则可以使用以下方法将其复制到本地文件:

          hadoop fs -getmerge /hdfs/source/dir_root/ local/destination
          

          如果使用docker,则必须执行以下步骤:

        • 将文件从hdfs复制到namenode(hadoop fs-get-output/part-r-00000/out_text)。 “/out\u text”将存储在namenode上

        • 通过(docker cp namenode:/out\u text output.txt)将文件从namenode复制到本地磁盘

        • output.txt将出现在您当前的工作目录中


        • 1.-记住您为文件指定的名称,而不是使用hdfs dfs-put。使用“get”代替。见下文


          $hdfs dfs-get/output fileFolderName In hdfs

          perfect tariq,我知道了,文件下没有文件的物理位置,甚至没有目录。bin/hadoop dfs-ls/use/hadoop/myfolder我可以查看文件,从我获得的信息可以检查文件,您可以将其从HDFS复制到本地文件系统,因此我想我可以再次从winscponce中移动它们,我需要提一下tariq,非常感谢您为我提供的时间和知识。谢谢。你确实支持了很多,这给了像我这样的新bie很大的信心。我明白了。如果希望查看文件内容或在webui上打开文件,实际上可以使用hdfs cat命令。这将避免您将文件下载到本地fs。不客气。如果你对你的问题的答案100%满意,你可以给他们打分,这样其他人就可以从中受益。。不只是这一个,但一般来说。只是添加到我的lat注释,如果它是一个二进制文件,cat不会显示实际内容。要查看二进制文件的内容,可以使用:bin/hadoop fs-text/path/To/file这似乎是一个bug(已修复)。看到答案了吧。这似乎对我不起作用。它总是说找不到文件。我正在使用cloudera的VM实例,它有CentOS6。4@SutharMonil你确定文件确实在那里吗?你能通过hadoop fs-ls浏览吗?hdfs-put是一个将文件从本地fs推送到本地fs到hdfs的命令。hdfs dfs-get是正确的选项,应接受此选项。这是大多数人正在寻找的,而不是一个分裂的文件。老实说,这将是最好的答案。通常,所有HDFS文件/表在这些目录中像0000_0、0001_0一样分开
          -getmerge
          将合并所有这些文件并放入本地目录中的1个文件中。以@Eponymous为荣
          hadoop fs -get /sourcedata/mydata.txt /user/ravi/mydata/
          
          hadoop fs -getmerge /hdfs/source/dir_root/ local/destination