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

下面两个命令是把文件从HDFS上下载到本地的命令。

get

使用方法:Hadoop fs -get [-ignorecrc] [-crc]

复制文件到本地文件系统。可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。

示例:

hadoop fs -get /user/hadoop/file localfile

hadoop fs -get hdfs://host:port/user/hadoop/file localfile

返回值:

成功返回0,失败返回-1。

copyToLocal

使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI

除了限定目标路径是一个本地文件外,和get命令类似。

也可以用如下的程序可实现将HDFS上的文件下载到本地。

import java.net.URI;
import java.io.OutputStream;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class FileCopy2Local
{
 public static void main(String[] args) throws Exception
 {
  String dest = "hdfs://localhost:9000/user/laozhao0/cite2.txt";
  String local = "/home/laozhao0/cite2.txt";
  Configuration conf = new Configuration();
  FileSystem fs = FileSystem.get(URI.create(dest),conf);
  FSDataInputStream fsdi = fs.open(new Path(dest));
  OutputStream output = new FileOutputStream(local);
  IOUtils.copyBytes(fsdi,output,4096,true);
 }
}

相关阅读:

将本地文件拷到HDFS中

从HDFS下载文件到本地

将本地文件上传至HDFS

HDFS基本文件常用命令

Hadoop中HDFS和MapReduce节点基本简介

《Hadoop实战》中文版+英文文字版+源码【PDF】

Hadoop: The Definitive Guide【PDF版】

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0c844d4fe5d3b1eda4dccb9c14d680f9.html